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?
30 réponses
-
Set
UIViewControllerBasedStatusBarAppearance
àYES
dans le .dossier plist. -
Dans le
viewDidLoad
faire un[self setNeedsStatusBarAppearanceUpdate];
-
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
}
alternativement, vous pouvez vous exclure de la barre d'état basée sur le contrôleur de vue apparence:
- Set
View controller-based status bar appearance
àNO
dans votreInfo.plist
. - 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 )
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
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
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.
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];
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::
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:
C'est ça.
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];
…
}
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é):
-
Set
the UIViewControllerBasedStatusBarAppearance
àNO
dans leInfo.plist
. -
Dans
ViewDidLoad
méthode ou n'importe où, où voulez-vous changer style de barre d'état:[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
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
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.
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.
Simplement En Appdelegate
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
eh Bien, c'est vraiment comme un morceau de gâteau pour moi.
sur votre application info.plist
.
- ensemble
View controller-based status bar appearance
àNO
- 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.
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'appelersetNeedsStatusBarAppearanceUpdate
.
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 /
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
}
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;}
réponse mise à jour pour pour Xcode GM Seed:
-
Dans
Info.plist
mettreView controller-based status bar appearance
commeNO
-
Dans le projet, à l':
-
Dans Le ViewDidLoad:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
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
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
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
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:
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.
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 fichierInfo.plist
d'une application et donnez-lui la valeurYES
.
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.
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 : -)!
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"
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.
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!
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];
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
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