Modification de la couleur du texte de la barre d'état dans l'écran de démarrage iOS 7

98

Je sais qu'il y a déjà des questions de stackoverflow qui indiquent comment changer la barre d'état pour tous les contrôleurs de vue. Je change actuellement la couleur de la barre d'état de cette façon:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

dans le application:DidFinishLaunching

De plus, j'ai changé la valeur de UIViewControllerBasedStatusBarAppearancedans le plist en NO. Cependant, dans l'écran de démarrage, il affiche toujours le texte de la barre d'état avec la couleur noire.

Est-il possible de changer la couleur de la couleur du texte de la barre d'état dans l'écran de démarrage ?

Tiago Almeida
la source
Que voulez-vous dire 'il affiche toujours la barre d'état avec la couleur noire': Si votre code fonctionne, la police de la barre d'état doit être blanche, la couleur d'arrière-plan de la barre d'état dépend de votre image de démarrage (qui devrait maintenant inclure la hauteur de la barre d'état - 20 pixels)
Vinzzz le
Désolé, j'ai vraiment manqué le mot du texte. Je ne modifie que la couleur du texte de la barre d'état. Je peux le changer après l'apparition de l'écran de démarrage, mais je ne peux pas le changer lorsque l'écran de démarrage se produit.
Tiago Almeida

Réponses:

224

Dans le fichier plist du projet, ajoutez la propriété "Style de la barre d'état" (la clé est UIStatusBarStyle). Ignorez ensuite toutes les valeurs possibles répertoriées dans la liste déroulante pour cette propriété et tapez à la UIStatusBarStyleLightContentplace.

Et vous ne devez pas configurer UIViewControllerBasedStatusBarAppearanceà NOvotre plist, vous pouvez définir la preferredStatusBarStylevous voulez vos contrôleurs de vue.

Vinzzz
la source
Existe-t-il un moyen de le rendre compatible avec une barre d'état teintée sur iOS 6?
Rafael Nobre
1
La couleur du texte de la barre d'état est soit blanche, soit noire. L'arrière-plan de la barre provient de votre image de lancement, puis de la vue de votre viewController si elle s'étend sous les barres.
Vinzzz
1
Après des tonnes de méthodes différentes, celle-ci a ENFIN fonctionné (avec UIViewControllerBasedStatusBarAppearance défini sur NO). Vous êtes un héros.
Tamás Sengel
vous pouvez également le faire via le code UIApplication.sharedApplication (). statusBarStyle = .LightContent. Je le fais dans AppDelegate
Yasmin Tiomkin
@Yasmin: pour changer de couleur APRÈS l'écran de démarrage, cette solution faisait déjà partie de la question;)
Vinzzz
33

Vous pouvez le faire sans écrire de ligne de code
Procédez comme suit pour que le texte de la barre d'état soit blanc dans toute l'application

Sur votre projet de fichier plist :

  • Style de barre d'état: UIStatusBarStyleLightContent
  • Afficher l'apparence de la barre d'état basée sur le contrôleur: NO
  • La barre d'état est initialement masquée: NO
Lucas
la source
La réponse acceptée est bonne, mais cela n'a pas fonctionné sur tous mes contrôleurs de vue sans faire la 2ème puce ci-dessus. Merci!
Clifton Labrum
"Afficher l'apparence de la barre d'état basée sur le contrôleur: YES" semble toujours faire l'affaire (iOS 9)
Nicolas Miari
19

Vous pouvez effectuer les opérations suivantes pour obtenir la barre d'état de couleur claire dans toute l'application.

  1. Sélectionnez le nom du projet dans le navigateur de projet.
  2. Sélectionnez le nom d'une cible dans la liste de la colonne de gauche de l'éditeur de projet.
  3. Cliquez sur Général en haut de l'éditeur de projet.
  4. Définir le style de la barre d'état -> Lumière

Dans votre fichier plist, ajoutez les valeurs suivantes:

  1. Style de la barre d'état - UIStatusBarStyleLightContent
  2. Afficher l'apparence de la barre d'état basée sur le contrôleur - NON

Cela vous aidera à obtenir la barre d'état en couleur BLANCHE dans toute l'application, y compris SPLASH SCREEN.

VM Anooj
la source
7

Réglez le UIViewControllerBasedStatusBarAppearancesur Non dans le plist

Ajoutez ensuite le code suivant dans l'option de lancement terminé

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

Veuillez suivre ce code, cela a fonctionné pour moi

Preejith augustine
la source
cela montre du texte blanc sur la barre d'état alors que mon arrière-plan est également clair. comment puis-je afficher du texte noir
Mangesh
Mangesh on the Target, allez dans les paramètres généraux, vous aurez la possibilité de définir le style de la barre d'état
Preejith augustine
Vous pouvez en fait écrire cette première ligne un peu plus simplement en utilisant la syntaxe de point, comme ceci: if (UIDevice.currentDevice.systemVersion.floatValue >= 7) {
Todd Lehman
2

Voici les directives / instructions Apple concernant le changement de la barre d'état.

Voici - Comment changer le style de la barre d'état:

Si vous voulez style barre d'état du jeu, le niveau d'application puis définissez UIViewControllerBasedStatusBarAppearanceà NOdans 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:

  1. Définissez le UIViewControllerBasedStatusBarAppearancesur YESdans le .plistfichier, si vous devez définir le style de la barre d'état au niveau de UIViewController uniquement.
  2. Dans la fonction d'ajout de viewDidLoad - setNeedsStatusBarAppearanceUpdate

  3. override favoriteStatusBarStyle 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. entrez la description de l'image ici


Vous pouvez 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:

entrez la description de l'image ici

Krunal
la source
1

Vous pouvez effectuer les opérations suivantes pour obtenir la barre d'état de couleur claire dans toute l'application.

Sélectionnez le nom du projet dans le navigateur de projet. Sélectionnez le nom d'une cible dans la liste de la colonne de gauche de l'éditeur de projet. Cliquez sur Général en haut de l'éditeur de projet. Définir le style de la barre d'état -> Lumière

Usman Nisar
la source