Mon application a un arrière-plan sombre, mais sous iOS 7, la barre d'état est devenue transparente. Donc, je ne vois rien là-bas, seulement l'indicateur de batterie vert dans le coin. Comment puis-je changer la couleur du texte de la barre d'état en blanc comme sur l'écran d'accueil?
Définissez UIViewControllerBasedStatusBarAppearance
sur YES
dans le fichier .plist.
Dans le viewDidLoad
faire un [self setNeedsStatusBarAppearanceUpdate];
Ajoutez la méthode suivante:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Note : Cela ne fonctionne pas pour les contrôleurs à l'intérieur de UINavigationController
, veuillez voir le commentaire de Tyson ci-dessous :)
Swift 3 - Cela fonctionnera avec les contrôleurs dans UINavigationController
. Ajoutez ce code dans votre contrôleur.
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Swift 5 et SwiftUI
Pour SwiftUI, créez un nouveau fichier Swift appelé HostingController.Swift
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Puis changez les lignes de code suivantes dans le SceneDelegate.Swift
window.rootViewController = UIHostingController(rootView: ContentView())
à
window.rootViewController = HostingController(rootView: ContentView())
Vous pouvez également désactiver l'affichage de la barre d'état basée sur le contrôleur de vue:
View controller-based status bar appearance
sur NO
dans votre Info.plist
.[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Remarque: Cette méthode est obsolète dans iOS9. Utilisez plutôt preferredStatusBarStyle
sur UIViewController. (voir Apple Developer Library )
Vous pouvez le faire sans écrire aucune ligne de code!
Procédez comme suit pour que le texte de la barre d'état soit de couleur blanche dans l'ensemble de l'application.
Sur vous projet fichier:
Transparent black style (alpha of 0.5)
NO
NO
Remarque: la réponse la plus votée ne fonctionne pas pour iOS 7/8
Dans Info.plist, définissez "Afficher l'apparence de la barre d'état basée sur le contrôleur" sur NO.
Dans AppDelegate, ajoutez
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
à
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
......
...
}
Cette solution fonctionne pour iOS 7/8
Pour moi, rien ne s'est passé avec l'utilisation de toutes les choses dans les autres réponses (et à partir d'autres sources/documentation). Ce qui a aidé, c’est de définir le style de barre de navigation sur "Noir" dans le XIB. Cela a changé le texte en blanc sans aucun code du tout.
Rien de tout cela n'a fonctionné pour moi, alors voici une solution de travail ...
Dans Info.plist
, ajoutez une ligne:
UIViewControllerBasedStatusBarAppearance
et définissez la valeur NO
.
Ensuite, dans AppDelegate dans didFinishLaunchingWithOptions
, ajoutez ces lignes:
[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
Vous n'avez pas besoin de faire de code pour cela
Vous devez ajouter la clé "Afficher l’apparence de la barre d’état basée sur le contrôleur" dans info.plist comme suit:
& définissez son type de valeur sur Boolean & valeur sur NO. Cliquez ensuite sur les paramètres du projet, puis sur l'onglet Général et sous Infos de déploiement, définissez le style de barre d'état préféré sur .Light comme suit:
C'est ça.
Juste deux étapes comme suit:
étape 1:
Sous l'onglet Info du project target
, Ajouter une ligne:
UIViewControllerBasedStatusBarAppearance
, régler la valeur 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 et le SDK iOS7 publiés le 18 septembre 2013 (au moins avec le contrôleur de navigation masqué):
Définissez the UIViewControllerBasedStatusBarAppearance
sur NO
dans le Info.plist
.
Dans la méthode ViewDidLoad
ou n’importe où, vous souhaitez modifier le style de la barre d’état: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Si votre UIViewController est à l'intérieur d'un UINavigationController, vous devrez définir 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 , veillez à définir les éléments suivants dans une classe qui gère votre contrôleur de navigation:
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
Cela devrait être tout ce dont vous avez besoin.
Dans AppDelegate.m, ajoutez ce qui suit.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
Et dans le fichier Plist, définissez "Afficher l'apparence de la barre d'état basée sur le contrôleur" sur NO.
Eh bien, cela fonctionne vraiment comme un morceau de gâteau pour moi.
Accédez au info.plist
de votre application.
View controller-based status bar appearance
sur NO
Status bar style
sur UIStatusBarStyleLightContent
Ensuite, allez au délégué de votre application et collez le code suivant dans lequel 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 Cela fonctionne pour moi.
Simply In Appdelegate
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
En Swift 3 est très facile avec seulement 2 étapes. Allez dans votre info.plist et changez la clé View controller-based status bar appearance
en "NON". Ensuite, dans Appdelegate, ajoutez cette ligne dans la méthode didfinishlaunchingwithoptions
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
cela a été déconseillé dans iOS9, vous devez maintenant remplacer cette propriété dans rootviewcontroller
cela a été déconseillé dans iOS 9 devrait le faire sur le rootviewcontroller
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
iOS 7 permet aux contrôleurs de vue individuels de déterminer l'apparence de la barre d'état, comme décrit dans la documentation du développeur Apple:
iOS 7 donne aux contrôleurs de vue la possibilité de régler le style de la barre d'état pendant l'exécution de l'application. Un bon moyen de modifier dynamiquement le style de la barre d'état consiste à implémenter
preferredStatusBarStyle
et, dans un bloc d'animation, à mettre à jour l'apparence de la barre d'état et à appelersetNeedsStatusBarAppearanceUpdate
.
La définition globale de l’apparence de la barre d’état est un processus en deux étapes.
Tout d'abord, vous devez dire à iOS que vous ne souhaitez pas définir l'apparence de la barre d'état vue par vue.
Ensuite, vous devez prendre en charge et définir le nouveau style de barre d'état global.
Pour désactiver le contrôle de la barre d'état affichage par affichage, 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 de votre application iOS, puis sélectionnez l'onglet Informations.
Survolez une ligne, 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 sur Boolean
. Enfin, entrez NO
dans le champ Valeur.
Pour définir un style global pour la barre d'état, ajoutez une autre propriété sous l'onglet Informations avec une clé de Status bar style
, un Type de String
et une Valeur de Opaque black style
.
Voici un article de blog avec un peu plus de détails et un exemple de code:
http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/
Pas besoin de faire un peu plus, il suffit d'écrire ce code dans votre viewController et d'obtenir la couleur de la barre d'état blanche
- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
Réponse mise à jour pour pour Xcode GM Graine:
Dans Info.plist
mettez View controller-based status bar appearance
comme NO
Dans le projet, définissez:
Dans ViewDidLoad:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Je pense que toutes les réponses ne signalent pas vraiment le problème car elles fonctionnent toutes dans des scénarios spécifiques. Mais si vous avez besoin de couvrir tous les cas, suivez les points ci-dessous:
Selon l'endroit où vous avez besoin du style de barre d'état, vous devez toujours garder à l'esprit ces 3 points:
1) Si vous avez besoin de la barre d'état sur l'écran de lancement ou dans d'autres endroits où vous ne pouvez pas la contrôler (pas dans les contrôleurs de vue, mais plutôt dans certains éléments/moments contrôlés par le système, tels que l'écran de démarrage. ) Vous allez dans les paramètres de votre projet
2) si vous avez un contrôleur dans un contrôleur de navigation Vous pouvez le modifier dans le générateur d'interface comme suit:
a) Sélectionnez la barre de navigation de votre contrôleur de navigation
b) Ensuite, définissez le style de la barre de navigation sur "Noir", car cela signifie que vous aurez un "fond noir" -> sombre sous la barre d'état. La barre d'état sera donc blanche.
Ou le faire dans le code comme suit
navigationController?.navigationBar.barStyle = UIBarStyle.Black
3) Si le contrôleur seul doit avoir son propre style de barre d'état et qu'il n'est pas incorporé dans une structure de conteneur en tant que UINavigationController
Définissez le style de la barre d'état dans le code du contrôleur:
Appeler simplement
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
dans le
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}
la méthode de mon AppDelegate
fonctionne très bien pour iOS7.
Voici Directives/Instructions Apple concernant le changement de barre d'état. Seul Dark & Light (while & black) sont autorisés dans la barre d'état.
Voici comment modifier le style de la barre d'état:
Si vous souhaitez définir le style de la barre d'état, le niveau de l'application, définissez UIViewControllerBasedStatusBarAppearance
sur NO
dans votre fichier `.plist '.
si vous souhaitez définir le style de la barre d'état au niveau du contrôleur de vue, procédez comme suit:
UIViewControllerBasedStatusBarAppearance
sur YES
dans le fichier .plist
, si vous devez définir le style de la barre d'état au niveau de UIViewController uniquement.Dans la fonction d'ajout viewDidLoad - setNeedsStatusBarAppearanceUpdate
écrasez preferredStatusBarStyle dans votre contrôleur de vue.
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Définissez la valeur de .plist en fonction du niveau de configuration du style de la barre d'état.
Voici quelques astuces pour modifier/définir la couleur d’arrière-plan de la barre d’état lors du lancement de l’application ou pendant viewDidLoad de votre contrôleur de vue.
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
return true
}
}
or
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
}
}
Voici le résultat:
Ceci est documenté dans le Guide de transition de l'interface utilisateur iOS 7 , auquel vous avez besoin d'un ID de développeur Apple pour accéder directement. L'extrait pertinent:
Parce que la barre d'état est transparente, la vue derrière elle est visible. [...] Utilisez une constante
UIStatusBarStyle
pour spécifier si le contenu de la barre d'état doit être sombre ou clair:
UIStatusBarStyleDefault
affiche un contenu sombre. [...]
UIStatusBarStyleLightContent
affiche le contenu lumineux. Utiliser lorsque le contenu sombre est derrière la barre d'état.
Aussi éventuellement 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 modifier pendant l'exécution de l'application. Pour accepter ce comportement, ajoutez la clé
UIViewControllerBasedStatusBarAppearance
au fichierInfo.plist
d'une application et donnez-lui la valeurYES
.
Je recommanderais certainement de consulter le document auquel vous pouvez accéder avec votre ID de développeur Apple.
Si vous voulez le même résultat avec Swift, vous pouvez utiliser ce code dans votre fichier AppDelegate.Swift:
UINavigationBar.appearance().barStyle = .BlackTranslucent
Et le texte de votre barre d'état sera blanc :-)!
Si vous souhaitez toujours utiliser View controller-based status bar appearance
dans info.plist, définissez la valeur sur OUI, ce qui signifie que vous pouvez modifier la barre d'état pour chaque contrôleur de vue, utilisez le code suivant pour le texte blanc dans la barre d'état de ViewDidLoad:
[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
J'ai fait des choses différentes et ça marche pour moi.
Sans changement de code, j'ai configuré mon fichier .plist comme suit:
J'espère que ça aide.
Pour chaque contrôleur de vue, je modifie la propriété "Méthodes simulées" de la "barre d'état", dans le storyboard, de "inférée" à "Contenu clair".
dans info.plist, définissez la valeur de champ NO Afficher l’apparence de la barre d’état basée sur le contrôleur et définissez barre d’état style de la lumière dans la cible> paramètre général.
Permettez-moi de 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 déroutant dans iOS 7, spécialement pour les débutants.
Si vous essayez de changer la couleur du noir au blanc dans Storyboard en sélectionnant le contrôleur de vue et en sélectionnant Métriques simulées à droite, cela ne fonctionnera pas et je ne sais pas pourquoi. Cela devrait fonctionner en changeant comme ceci mais n'importe comment.
Deuxièmement, vous ne trouverez pas la propriété UIViewControllerBasedStatusBarAppearance dans votre plist mais, par défaut, il n'y est pas. Vous devez l'ajouter vous-même en cliquant sur le bouton +, puis définissez-le sur NON.
couleur du texte de la barre d'état ios 7
Enfin, vous devez accéder à votre fichier AppDelegate.m et ajouter ce qui suit dans la méthode didFinishLaunchingWithOptions, ajoutez la ligne suivante:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Cela changera la couleur en blanc pour tous vos contrôleurs de vue. J'espère que cela t'aides!
Dans Plist, ajoutez ceci:
UIStatusBarStyleLightContent
NO
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 un plist clé/valeur brute
UIViewControllerBasedStatusBarAppearance
: NO
UIStatusBarStyle
: Opaque black style
Pour que cela fonctionne, 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 souhaitez contrôler la barre d'état contrôleur par vue, vous souhaiterez sous-classer UINavigationController et implémenter preferredStatusBarStyle de sorte qu'il renvoie la préférence de topViewController.
Assurez-vous de changer la référence de classe dans votre scène de storyboard d'UINavigationController à votre sous-classe (par exemple, MyNavigationController dans l'exemple ci-dessous).
(Ce qui suit fonctionne pour moi. Si votre application est basée sur TabBar, vous voudrez faire quelque chose de similaire en sous-classant UITabBarController mais je ne l'ai pas encore essayé).
@interface MyNavigationController : UINavigationController
@end
@implementation MyNavigationController
- (UIStatusBarStyle)preferredStatusBarStyle
{
return self.topViewController.preferredStatusBarStyle;
}
@end
Pour Xcode 5.1:
Ajouter " Afficher l'apparence de la barre d'état basée sur le contrôleur " à NON dans la .plist.
Dans AppDelegate, ajoutez:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
C'est tout!
Vous pouvez le faire depuis info.plist:
1) "Afficher l'apparence de la barre d'état basée sur le contrôleur" défini sur "NON"
2) "Style de la barre d'état" défini sur "UIStatusBarStyleLightContent"
terminé
Dans Info.plist, définissez "Afficher l'apparence de la barre d'état basée sur le contrôleur" sur NO.
Dans AppDelegate, ajoutez
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Swift 3 - Xcode 8.
Si vous voulez que la barre d’état soit initialement cachée sur l’écran de lancement, essayez ceci:
Étape 1: Ajouter ce qui suit à info.plist
.
View controller-based status bar appearance
valeur NO
Status bar is initially hidden
valeur YES
Étape 2: Ecrivez ceci dans la méthode didFinishLaunchingWithOptions
.
UIApplication.shared.isStatusBarHidden = false
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
Si votre application requiert UIStatusBarStyleLightContent
par défaut, mais que vous souhaitiez toujours pouvoir utiliser UIStatusBarStyleDefault
sur certains écrans, vous pouvez choisir de gérer la couleur de la barre d'état au niveau du contrôleur. Dans tous les cas, vous devrez écraser preferredStatusBarStyle
dans chaque contrôleur de vue (ou l'implémenter dans un contrôleur de vue de base, dont tous les autres contrôleurs de vue hériteront). Voici une autre façon de résoudre ce problème:
UIViewControllerBasedStatusBarAppearance
sur NO
dans le plistUIStatusBarStyle
sur UIStatusBarStyleLightContent
Tous les contrôleurs de vue utiliseront du texte blanc pour la barre d'état. Ajoutez maintenant ces méthodes uniquement dans les contrôleurs de vue nécessitant la barre d'état avec du texte noir:
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
Le moyen le plus simple de procéder depuis Xcode (sans codage) est:
View controller-based status bar appearance
à votre Info.plist et définissez la valeur sur NO
.Deployment Info
, vous trouverez une option pour Status Bar Style
. Définissez la valeur de cette option sur Light
.Vous aurez la barre d'état White
.
Je fais cela dans iOS 9 et Swift 2.0 si j'utilise UINavigationController
self.navigationController?.navigationBar.barStyle = UIBarStyle.Black
Et je fais cela si j'utilise modal segue
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
Dans iOS 8: ajoutez NavigationController.NavigationBar.BarStyle = UIBarStyle.Black;
à viewDidLoad
Supprimez le Afficher l’apparence de la barre d’état basée sur le contrôleur dans le fichier .plist (si vous avez créé) et recréez-le.
réglez style de barre d'état sur style noir opaque
Dans appDelegate, ajoutez le code suivant sous didFinishLaunching.
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Cela semble être un problème avec la version actuelle de Xcode et iOS 7.
Certains contenus associés sur les forums de développement Apple se trouvent dans une recherche de UIStatusBarStyleLightContent dans "iOS 7 Beta Livability" sur le Apple Forums de développeur *. (actuellement 32 articles).
Je suis tombé dessus en essayant de le régler sur la version allégée.
(Ceci est juste un suivi de la réponse d'Aaron.)
Cela a fonctionné pour moi:
Réglez le UIViewControllerBasedStatusBarAppearance
sur YES
dans le plist
La rootViewController
a besoin de l’implémentation de la méthode pour
-(UIStatusBarStyle)preferredStatusBarStyle
Parce que mon rootViewController
est géré par Cocoapods (JASidePanelController
), j'ai ajouté cette méthode via une catégorie:
#import "JASidePanelController+StatusBarStyle.h"
@implementation JASidePanelController (StatusBarStyle)
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
@end
Il suffit de changer 1)Info.plist
Affichez la barre d'état basée sur le contrôleur appearance
-> NO
et écrivez 2)
[[UIApplication
sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
dans
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
changer la couleur du texte de la barre d'état pour tous les ViewControllers
Swift
si l'apparence de la barre d'état basée sur le contrôleur View = YES dans Info.plist
puis utilisez cette extension pour tous les NavigationController
extension UINavigationController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
s'il n'y a pas d'UINavigationController et que vous ne disposez que d'UIViewController, utilisez le code ci-dessous:
extension UIViewController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Objectif C
créer une catégorie de classe
Pour UIViewController
Dans UIViewController + StatusBarStyle.h
@interface UIViewController (StatusBarStyle)
@end
Dans UIViewController + StatusBarStyle.m
#import "UIViewController+StatusBarStyle.h"
@implementation UIViewController (StatusBarStyle)
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
@end
Pour UINavigationController
Dans UINavigationController + StatusBarStyle.h
@interface UINavigationController (StatusBarStyle)
@end
Dans UINavigationController + StatusBarStyle.m
#import "UINavigationController+StatusBarStyle.h"
@implementation UINavigationController (StatusBarStyle)
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
@end
Vous pouvez utiliser ceci pour iOS 6 et 7:
#ifdef __IPHONE_7_0
# define STATUS_STYLE UIStatusBarStyleLightContent
#else
# define STATUS_STYLE UIStatusBarStyleBlackTranslucent
#endif
[[UIApplication sharedApplication] setStatusBarStyle:STATUS_STYLE animated:YES];
Sur iOS 7, si vous souhaitez utiliser UIViewControllerBasedStatusBarAppearance == YES et que votre contrôleur de vue racine est UINavigationController, vous devez le sous-classer et surcharger childViewControllerForStatusBarStyle, par exemple, comme ceci:
- (UIViewController*) childViewControllerForStatusBarStyle
{
return self.viewControllers.lastObject;
}
Après cela, preferredStatusBarStyle sera appelé sur les contrôleurs de vue avancés.
S'il vous plaît essayer ceci
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[application setStatusBarHidden:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
statusBar.backgroundColor = [UIColor blackColor];
}
Ce que je devais faire pour Swift et le contrôleur de navigation
extension UINavigationController {
override open var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Si vous souhaitez définir une couleur, utilisez le code ci-dessous.
id statusBarWindow = [[UIApplication sharedApplication] valueForKey:@"statusBarWindow"];
id statusBar = [statusBarWindow valueForKey:@"statusBar"];
SEL setForegroundColor_sel = NSSelectorFromString(@"setForegroundColor:");
if([statusBar respondsToSelector:setForegroundColor_sel]) {
// iOS 7+
[statusBar performSelector:setForegroundColor_sel withObject:YourColorHere];
^^^^^^^^^^^^^
}
Je sais que j'accède à une API privée, mais je l'ai utilisé dans de nombreux projets et Apple l'a approuvé.
Juste lors de la soumission de l'application, envoyez ce code à Apple dans la section Commentaires et indiquez que vous utilisez ce code pour modifier la couleur de la barre d'état.
Et oui , n'oubliez pas ci-dessous aussi.