J'utilise
UIApplication.sharedApplication().setStatusBarStyle()
Dans mon appDelegate et cela a bien fonctionné, mais depuis iOS 9, cette méthode est obsolète et je ne trouve pas d'alternative.
Je veux changer le style de la barre d'état en .LightContent pour toute mon application, mais la seule suggestion que xCode me donne est de gérer cela dans chaque VC séparément avec;
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
Quelqu'un at-il une idée de la façon de procéder pour toute l'application?
Merci d'avance
Je pense avoir trouvé une solution. J'ai fini par régler le
View controller-based status bar appearance
booléen à NO
Dans mon fichier info.plist.
Puis je suis allé chez General settings -> Deployment info
et a modifié l'option déroulante Status Bar Style
à Light
au lieu de Default
Cela a changé le style de la barre d'état en Light
pour toute mon application, exactement ce que je voulais.
J'espère que ça aide!
Dans Swift 3 est comme ça:
UIApplication.shared.statusBarStyle = .lightContent
Pour mettre à jour dynamiquement IStatusBarStyle sur les contrôleurs de vue, utilisez cette méthode
cela supprimera également l'avertissement obsolète
'setStatusBarStyle:' est déconseillé: d'abord déconseillé dans iOS 9.0 - Utilisation - [UIViewController PreferredStatusBarStyle]
pour appeler
[[UIApplication sharedApplication] setStatusBarStyle:style];
Commençons
Objectif - C
définir tilityFunction
+(void)setStatusBarStyle:(UIStatusBarStyle )style {
[[NSUserDefaults standardUserDefaults] setInteger:style forKey:@"UIStatusBarStyle"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
contourner cette méthode dans votre BaseViewController
- (UIStatusBarStyle)preferredStatusBarStyle {
UIStatusBarStyle style = [[NSUserDefaults standardUserDefaults] integerForKey:@"UIStatusBarStyle"];
return style;
}
définissez la valeur UIStatusBarStyle pour AnyViewController à l'aide d'une fonction UtilityFunction comme ci-dessous:
[UtilityFunctions setStatusBarStyle:UIStatusBarStyleDefault];
// call below code for preferred style
[self preferredStatusBarStyle];
Swift 4.
définir tilityFunction
class func setPreferedStyle(style:UIStatusBarStyle)->Void {
UserDefaults.standard.set(style, forKey: "UIStatusBarStyle")
UserDefaults.standard.synchronize()
}
contourner cette méthode dans votre BaseViewController
override var preferredStatusBarStyle: UIStatusBarStyle {
if let style: UIStatusBarStyle = UIStatusBarStyle(rawValue:UserDefaults.standard.integer(forKey: "UIStatusBarStyle")) {
return style
}
return UIStatusBarStyle.lightContent
}
définissez la valeur UIStatusBarStyle pour AnyViewController à l'aide d'une fonction UtilityFunction comme ci-dessous:
Utility.setPreferedStyle(style: .lightContent)
// call below code for preferred style
preferredStatusBarStyle()
Cela a bien fonctionné pour moi dans Xcode 7.
Dans AppDelegate:
UIApplication.sharedApplication().statusBarStyle = .LightContent
pour ceux qui travaillent toujours avec Swift 3 dans Xcode 8:
(légèrement différent de la réponse de Marlon Ruiz ci-dessus, pas une fonction de substitution, mais dans viewDidLoad)
override func viewDidLoad() {
super.viewDidLoad()
var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}