Recherche…


Pour les barres d'état non-UINavigationBar

  1. Dans info.plist, définissez l' View controller-based status bar appearance sur YES
  2. 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:

entrer la description de l'image ici

É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];


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow