Comment changer la couleur du texte de la barre D'État dans iOS

mon application a un fond sombre, mais dans iOS 7 la barre de statut est devenue transparente. Donc je ne vois rien là-bas, seulement l'indicateur de batterie verte dans le coin. Comment puis-je changer la couleur du texte de la barre d'état en blanc comme il est sur l'écran d'accueil?

931
demandé sur Krunal 2013-07-16 18:11:22
la source

30 ответов

  1. Set UIViewControllerBasedStatusBarAppearance à YES dans le .dossier plist.

  2. Dans le viewDidLoad faire un [self setNeedsStatusBarAppearanceUpdate];

  3. ajouter la méthode suivante:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }
    

Note : cela ne fonctionne pas pour les contrôleurs à l'intérieur de UINavigationController , s'il vous plaît voir le commentaire de Tyson ci-dessous :)

Swift 3 - cela fonctionnera contrôleurs à l'intérieur UINavigationController . Ajoutez ce code dans votre controller.

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}
1314
répondu Peter B. Kramer 2017-05-23 15:34:54
la source

alternativement, vous pouvez vous exclure de la barre d'état basée sur le contrôleur de vue apparence:

  1. Set View controller-based status bar appearance à NO dans votre Info.plist .
  2. appel [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Note: cette méthode a été dépréciée dans iOS9. Utilisez preferredStatusBarStyle sur le UIViewController à la place. (voir Apple Developer Library )

841
répondu wilsontgh 2015-11-17 15:35:58
la source

vous pouvez le faire sans écrire aucune ligne de code!

Faites ce qui suit pour rendre la barre d'état texte Couleur Blanc à travers l'ensemble de l'application

Sur vous projet plist fichier:

  • barre d'État style: Transparent black style (alpha of 0.5)
  • afficher la barre d'état basée sur le contrôleur apparence: NO
  • La barre D'État
  • est initialement cachée: NO
432
répondu Lucas 2016-10-04 14:27:48
la source

Note: la réponse la plus contestée ne fonctionne pas pour iOS 7 / 8

Dans L'Info.affichage de la barre d'état basée sur le contrôleur ("View controller-based status bar appearance"): NO

ajouter

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

à

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ......
   ...
}    

Cette solution fonctionne pour iOS 7 / 8

241
répondu Pradeep Mahdevu 2016-11-20 15:05:08
la source

pour moi, il ne s'est rien passé avec l'utilisation de toutes les choses dans les autres réponses (et d'autres sources/documentation). Ce qui a aidé a été de mettre le Style de la barre de Navigation à "noir" dans le XIB. Cela a changé le texte en blanc, sans code.

Enter image description here

108
répondu haraldmartin 2015-12-14 17:46:51
la source

rien de tout cela n'a fonctionné pour moi, donc voici une solution de travail...

dans Info.plist , ajouter une ligne:

UIViewControllerBasedStatusBarAppearance , et définit la valeur NO .

puis dans AppDelegate dans didFinishLaunchingWithOptions , ajouter ces lignes:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
95
répondu stepik21 2015-03-19 23:50:35
la source

vous n'avez pas besoin de faire de code pour ce

vous devez ajouter la touche" Affichage de la barre d'état basée sur le contrôleur " dans info.plist comme suit:: enter image description here

et définissez sa valeur de type Boolean et de la valeur ou PAS. Puis cliquez sur Paramètres du projet, puis cliquez sur L'onglet Général et sous informations de déploiement définir le style de barre d'état préféré .Lumière comme suit:

enter image description here

C'est ça.

54
répondu Ajinkya Patil 2016-02-19 13:41:29
la source

juste deux étapes comme suit:

Étape 1:

sous L'onglet" Info " du project target , ajouter la ligne:

UIViewControllerBasedStatusBarAppearance , valeur de consigne NO .

Étape 2:

dans le projet AppDelegate.m :

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}
48
répondu folse 2014-04-01 23:35:56
la source

cela fonctionne dans Golden Master iOS 7 et Xcode 5 gm seed et iOS7 SDK publié le 18 septembre 2013 (au moins avec le contrôleur de navigation caché):

  1. Set the UIViewControllerBasedStatusBarAppearance à NO dans le Info.plist .

  2. Dans ViewDidLoad méthode ou n'importe où, où voulez-vous changer style de barre d'état: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

42
répondu Deniss Fedotovs 2013-09-21 14:31:45
la source

dans le cas où votre UIViewController est à l'intérieur D'un UINavigationController, vous devrez régler le BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

la réponse originale est ici

https://devforums.apple.com/message/844264#844264

32
répondu Mohit Padalia 2013-09-27 12:16:46
la source

si vous avez un contrôleur de navigation intégré créé via Interface Builder , assurez-vous de définir ce qui suit dans une classe qui gère votre contrôleur de navigation:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

C'est tout ce dont vous avez besoin.

29
répondu matt bernardo 2013-09-22 20:57:44
la source

j'utilise Xcode 6 beta 5 sur un projet Swift , pour une application iOS 7.

voici ce que j'ai fait, et ça marche:

info.plist:

Enter image description here

26
répondu fancoolo 2015-03-19 23:53:51
la source

In AppDelegate.m, ajouter ce qui suit.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

et dans le fichier Plist, définissez 'view controller-based status bar appearance' à NO.

22
répondu neo D1 2015-03-19 22:04:38
la source

Simplement En Appdelegate

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
20
répondu Vivek Sehrawat 2014-02-05 16:00:56
la source

eh Bien, c'est vraiment comme un morceau de gâteau pour moi.

sur votre application info.plist .

  1. ensemble View controller-based status bar appearance à NO
  2. Set Status bar style à UIStatusBarStyleLightContent

Ensuite, allez sur le délégué de votre application et collez dans le code suivant où vous définissez le RootViewController de votre windows.

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
    [self.window.rootViewController.view addSubview:view];
}

Bingo. C'est de travailler pour moi.

20
répondu Shahid Iqbal 2015-03-19 23:52:41
la source
  1. Aller à Project -> Target ,

  2. puis Status Bar Style à Light . Il rend la barre d'état blanche de l'écran de lancement. Project Setting

  3. puis View controller-based status bar appearance égale à NO dans Info.plist .

19
répondu Wanbok Choi 2016-08-02 15:47:50
la source

iOS 7 permet aux contrôleurs de vue individuels de déterminer l'apparence de la barre d'état, comme décrit par la documentation du développeur D'Apple:

iOS 7 donne aux contrôleurs de vue la possibilité d'ajuster le style de la barre d'état pendant que l'application est en cours d'exécution. Une bonne façon de changer le style de la barre d'état de façon dynamique est d'implémenter preferredStatusBarStyle et-dans un bloc d'animation-de mettre à jour l'apparence de la barre d'état et d'appeler setNeedsStatusBarAppearanceUpdate .

définir l'apparence de la barre de statut à l'échelle mondiale est un processus en deux étapes.

tout d'abord, vous devez dire à iOS que vous ne voulez pas définir l'apparence de la barre de statut sur une base de vue par vue.

ensuite, vous devez prendre en charge et réellement définir le nouveau style de barre de statut global.

pour désactiver le contrôle de la barre d'état vue par vue, vous devez définir la propriété View controller-based status bar appearance dans Info.plist .

ouvrez le navigateur de projet et sélectionnez le projet pour votre application iOS, puis sélectionnez l'onglet Info.

passez au-dessus d'une rangée, puis cliquez sur le signe plus qui apparaît pour ajouter une nouvelle propriété à votre .plist .

entrez View controller-based status bar appearance dans le champ clé, puis assurez-vous que le champ Type est défini à Boolean . Enfin, inscrivez NO dans le champ Valeur.

pour définir un style global pour la barre d'état, ajouter un autre propriété sous l'onglet Info avec une clé de Status bar style , un Type de String et une valeur de Opaque black style .

voici un billet de blog avec un peu plus de détails et quelques exemples de code:

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7 /

17
répondu Josh Earl 2013-12-10 17:47:43
la source

Change in info PLIST Dans Swift 3 est très facile avec seulement 2 étapes. Accédez à vos informations.changer la touche View controller-based status bar appearance en " non". Puis dans l'Appdelegate il suffit d'ajouter cette ligne dans didfinishlaunchingwithoptions méthode

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }
16
répondu James Rochabrun 2017-03-28 01:23:30
la source

Pas besoin de faire un peu plus , il suffit d'écrire ce code dans votre viewController et d'obtenir le statut de la barre de couleur blanc

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
12
répondu Mohit tomar 2013-09-27 12:49:26
la source

réponse mise à jour pour pour Xcode GM Seed:

  1. Dans Info.plist mettre View controller-based status bar appearance comme NO

  2. Dans le projet, à l':

    Enter image description here

  3. Dans Le ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

12
répondu parilogic 2015-03-19 23:56:25
la source

je pense que toutes les réponses ne pointent pas vraiment le problème parce que toutes fonctionnent dans des scénarios spécifiques. Mais si vous devez couvrir tous les cas suivre les points ci-dessous:

en fonction de l'endroit où vous avez besoin de la barre d'état de style léger, vous devriez toujours avoir à l'Esprit ces 3 points:

1) Si vous avez besoin de la barre d'État à l'écran de lancement ou à d'autres endroits, où vous ne pouvez pas le contrôler (pas dans les contrôleurs de vue, mais plutôt un système éléments contrôlés / moments comme L'écran de lancement) Vous accédez à vos paramètres de projet Project settings

2) Si vous avez un contrôleur à l'intérieur d'un contrôleur de navigation Vous pouvez le modifier dans l'interface builder comme suit:

a) sélectionnez la barre de navigation de votre contrôleur de navigation Select the navigation bar of your navigation controller

B) alors mis le style de la barre de navigation à "noir", parce que cela signifie que vous aurez un" noir "- > arrière-plan sombre sous votre barre de statut, de sorte qu'il définira la barre de statut à blanc

enter image description here

ou le faire en code comme suit

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) Si vous avez le contrôleur seul qui a besoin d'avoir son propre style de barre d'état et il n'est pas intégré dans une structure de conteneur comme un UINavigationController

définit le style de la barre d'état dans le code pour le contrôleur:

Setting the status bar style in code

11
répondu Fawkes 2015-09-18 19:29:04
la source

appel simple

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

dans le

-(BOOL)application:(UIApplication *)application 
           didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}

méthode de mon AppDelegate fonctionne très bien pour moi dans iOS7.

10
répondu Cagdas Altinkaya 2014-04-25 17:11:22
la source

ceci est documenté dans le iOS 7 UI Transition Guide , que vous avez besoin D'un ID de développeur D'Apple pour accéder directement. L'extrait pertinent:

parce que la barre d'état est transparente, la vue derrière elle montre à travers. [...] Utiliser une constante UIStatusBarStyle pour spécifier si le contenu de statusbar doit être sombre ou clair:

UIStatusBarStyleDefault affiche un contenu sombre. [...]

UIStatusBarStyleLightContent affiche le contenu lumineux. Utilisez lorsque le contenu sombre est derrière la barre d'état.

également peut-être d'intérêt:

dans iOS 7, vous pouvez contrôler le style de la barre d'État à partir d'un contrôleur VEW individuel et le changer pendant que l'application tourne. Pour opter pour ce comportement, ajoutez la touche UIViewControllerBasedStatusBarAppearance au fichier Info.plist d'une application et donnez-lui la valeur YES .

j'aurais certainement nous vous recommandons de consulter le document, auquel, encore une fois, vous pouvez accéder avec votre identifiant de développeur Apple.

9
répondu Aaron Miller 2015-04-29 15:12:55
la source

si vous souhaitez obtenir le même résultat avec Swift, vous pouvez utiliser ce code dans votre AppDelegate.fichier swift:

UINavigationBar.appearance().barStyle = .BlackTranslucent

et le texte de votre barre de statut sera blanc : -)!

8
répondu fraxool 2016-01-10 22:30:06
la source

j'ai fait des choses différentes et ça marche pour moi.

sans changement de code, je l'ai configuré .fichier plist comme ceci:

  • afficher l'apparence de la barre d'état basée sur le contrôleur > non
  • style barre de statut > Uistatusbarstylelightcontenu (chaîne simple)

j'espère que cela aide.

modifier

pour chaque vue contrôleur-je changer la "barre d'état"Simulé Métriques de la propriété, de storyboard, de "déduire" à "la Lumière de Contenu"

7
répondu Felipe Antonio Cardoso 2013-09-22 18:18:15
la source

dans l'info.plist définit la valeur du champ NO afficher la barre d'état basée sur le contrôleur apparence et définit statusbar lumière de style dans la cible > paramètre général.

7
répondu parvind 2015-03-30 08:06:22
la source

laissez-moi vous donner une réponse complète à votre question. Changer la couleur du texte de la barre d'état est très facile, mais c'est un peu confus dans iOS 7 spécialement pour les débutants.

si vous essayez de changer la couleur du noir au blanc dans le Storyboard en sélectionnant le contrôleur de vue et en allant aux mesures simulées sur le côté droit, il ne fonctionnera pas et je ne sais pas pourquoi. Il devrait fonctionner en changeant comme ceci, mais n'importe comment.

Deuxièmement, vous ne trouverez pas UIViewControllerBasedStatusBarAppearance propriété dans votre liste, mais par défaut son pas là. Vous devez ajouter par vous-même en cliquant sur le bouton+, puis réglez à PAS.

iOS 7 barre de statut couleur du texte

enfin, vous devez aller à votre AppDelegate.m fichier et ajouter ce qui suit dans la méthode didFinishLaunchingWithOptions, ajouter la ligne suivante:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

cela changera la couleur en blanc pour toute votre vue contrôleur. Espérons que cette aide!

7
répondu Amit Shelgaonkar 2015-06-30 20:38:28
la source

si vous voulez toujours utiliser View controller-based status bar appearance dans info.plist défini à YES, ce qui signifie que vous pouvez changer la barre de statut pour chaque vue-controller, utilisez ce qui suit pour le texte blanc dans la barre de statut dans ViewDidLoad:

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
7
répondu eirik 2016-02-17 16:20:54
la source

la clé pour faire ce travail est que seul le contrôleur de vue plein écran peut dicter le style de la barre d'état.

si vous utilisez un contrôleur de navigation et que vous voulez contrôler la barre d'état sur une base de contrôleur de vue per, vous voudrez sous-classe UINavigationController et mettre en œuvre preferredStatusBarStyle tel qu'il renvoie la préférence du controller topViewController.

assurez-vous de changer la référence de classe dans votre storyboard scène de UINavigationController à votre sous-classe (par exemple MyNavigationController dans l'exemple ci-dessous).

(Le suivant fonctionne pour moi. Si votre application est basée sur TabBar, vous voudrez faire quelque chose de similaire en subclassant L'UITabBarController mais je n'ai pas essayé).

@interface MyNavigationController : UINavigationController

@end

@implementation MyNavigationController

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return self.topViewController.preferredStatusBarStyle;
}

@end
6
répondu Juddster 2013-10-16 22:21:41
la source

pour résumer, éditez votre projet Info.plist et ajoutez:

View controller-based status bar appearance : NO

Status bar style : Opaque black style

ou si vous avez la clé brute/le bordereau de valeur

UIViewControllerBasedStatusBarAppearance : NO

UIStatusBarStyle : Opaque black style

6
répondu budidino 2014-10-08 18:17:14
la source

Autres questions sur