web-dev-qa-db-fra.com

Texte en couleur de la barre d'état dans XCode 6-b3 (Swift)

J'ai essayé de modifier le texte de couleur de la barre d'état mais aucune réponse de ce fil ne fonctionne pas. Tout spécialement pour XCode 6?

J'ai essayé d'insérer:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

à UIViewController

aussi

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

à AppDelegate.Swift Et j'ai essayé de le changer dans info.plist Mais cela ne l'affecte pas. Comment changer le texte de couleur de la barre d'état en blanc?

18
Maxim Tsybanov

Dans votre Info.plist, vous devez définir Afficher l'apparence de la barre d'état basée sur le contrôleur à n'importe quelle valeur.

enter image description here

Si vous le définissez [[# #]] oui [~ # ~] alors vous devez remplacer la fonction preferredStatusBarStyle dans chaque contrôleur de vue.

Si vous le définissez NO alors vous pouvez définir le style dans AppDelegate en utilisant

UIApplication.sharedApplication().statusBarStyle = .LightContent

51
Keenle

Il suffit de définir "Afficher l'apparence de la barre d'état basée sur le contrôleur == NON" dans votre liste et de mettre une seule ligne dans votre classe appdelegate dans didfinshLaunching.

 UIApplication.sharedApplication().statusBarStyle = .LightContent
3
Abhimanyu Rathore

Swift 3.

Réglez simplement View controller-based status bar appearance == NO Dans votre *.plist et placez le code ci-dessous dans votre classe appdelegate dans la méthode didFinishLaunchingWithOptions avant return.

let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
if statusBar.responds(to:#selector(setter: UIView.backgroundColor)) {
    statusBar.backgroundColor = UIColor.red
}
UIApplication.shared.statusBarStyle = .lightContent

Vous pouvez modifier backgroundColor et statusBarStyle selon vos besoins.

2
Himanshu padia

Assurez-vous de définir le View controller-based status bar appearance dans votre fichier info.plist vers Yes.

De plus, si vous êtes dans un UINavigationController, vous ne pouvez pas simplement y définir le style dans ViewControllers. Sous-classe UINavigationController et ajoutez-y:

override func preferredStatusBarStyle() -> UIStatusBarStyle {

    if let vc = self.viewControllers?.last as? UIViewController {
        return vc.preferredStatusBarStyle()
    }

    return super.preferredStatusBarStyle()
}

Vous pouvez maintenant définir le style de barre dans la sous-classe UIViewController et UINavigationController l'écoutera :).

1
Kevin R

Keenle a raison, à partir d'iOS7, vous devez désactiver les styles de barre d'état basés sur viewController avant de pouvoir le définir à l'échelle de l'application.

doc: https://developer.Apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//Apple_ref/occ/instm/UIApplication/setStatusBarStyle:animated :

"Pour désactiver le comportement d'apparence de la barre d'état basée sur le contrôleur de vue, vous devez ajouter la clé UIViewControllerBasedStatusBarAppearance avec une valeur NON au fichier Info.plist de votre application, mais il n'est pas recommandé de le faire."

0
Sameer J