iOS
Changer la couleur de la barre d'état
Recherche…
Pour les barres d'état non-UINavigationBar
- Dans info.plist, définissez l'
View controller-based status bar appearance
surYES
- Dans la vue, les contrôleurs non contenus dans
UINavigationController
implémentent cette méthode.
En Objective-C:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
En Swift:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
Pour les barres d'état UINavigationBar
Sous-classe UINavigationController, puis remplacez ces méthodes:
En Objective-C:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
En Swift:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .lightContent
}
Vous pouvez également définir barStyle
sur l'instance UINavigationBar
:
Objectif c:
// e.g. in your view controller's viewDidLoad method:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack; // this will give you a white status bar
Rapide
// e.g. in your view controller's viewDidLoad method:
navigationController?.navigationBar.barStyle = .black // this will give you a white status bar
UIBarStyle
options UIBarStyle
sont les options default
, black
, blackOpaque
, blackTranslucent
. Le dernier 3 devrait tous vous donner une barre d'état avec du texte blanc, juste les deux derniers spécifient l'opacité de la barre.
Remarque: vous pouvez toujours modifier l'apparence de votre barre de navigation comme vous le souhaitez.
Si vous ne pouvez pas modifier le code de ViewController
Si vous utilisez une bibliothèque qui contient (par exemple) AwesomeViewController avec une couleur de barre d'état incorrecte, vous pouvez essayer ceci:
let awesomeViewController = AwesomeViewController()
awesomeViewController.navigationBar.barStyle = .blackTranslucent // or other style
Pour le confinement de ViewController
Si vous utilisez UIViewControllerContainment
il existe quelques autres méthodes qui méritent d’être examinées.
Lorsque vous souhaitez qu'un viewController enfant contrôle la présentation de la barre d'état (par exemple, si l'enfant est positionné en haut de l'écran)
à Swift
class RootViewController: UIViewController {
private let messageBarViewController = MessageBarViewController()
override func childViewControllerForStatusBarStyle() -> UIViewController? {
return messageBarViewController
}
override func viewDidLoad() {
super.viewDidLoad()
//add child vc code here...
setNeedsStatusBarAppearanceUpdate()
}
}
class MessageBarViewController: UIViewController {
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .Default
}
}
Modification du style de la barre d'état pour toute l'application
RAPIDE:
Étape 1:
Dans votre Info.plist, ajoutez l'attribut suivant:
View controller-based status bar appearance
et définir sa valeur à
NO
comme décrit dans l'image ci-dessous:
Étape 2:
Dans votre fichier AppDelegate.swift , dans la méthode didFinishLaunchingWithOptions
, ajoutez ce code:
UIApplication.shared.statusBarStyle = .lightContent
ou
UIApplication.shared.statusBarStyle = .default
L'option .lightContent définira la couleur du statusBar sur blanc pour toute l'application.
L'option .default définira la couleur du statusBar sur la couleur noire d'origine, pour toute l'application.
OBJECTIF C:
Suivez la première étape depuis la section SWIFT . Ajoutez ensuite ce code au fichier AppDelegate.m :
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
ou
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];