Mon application a un fond sombre, mais dans iOS 7, la barre d'état est devenue transparente. Je ne peux donc rien y voir, seulement l'indicateur de batterie vert dans le coin. Comment puis-je changer la couleur du texte de la barre d'état en blanc comme sur l'écran d'accueil ?
Définissez l'option UIViewControllerBasedStatusBarAppearance
à YES
dans le fichier .plist.
Dans le viewDidLoad
, faites un `[self setNeedsStatusBarAppearanceUpdate];``.
Ajoutez la méthode suivante :
- (UIStatusBarStyle)preferredStatusBarStyle
{
retourne UIStatusBarStyleLightContent ;
}
Note : Ceci ne fonctionne pas pour les contrôleurs à l'intérieur de UINavigationController
, veuillez voir le commentaire de Tyson ci-dessous :)
Swift 3 - Cela fonctionnera pour les contrôleurs à l'intérieur de UINavigationController
. Ajoutez ce code dans votre contrôleur.
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Swift 5 et SwiftUI
Pour SwiftUI, créez un nouveau fichier swift appelé HostingController.swift
.
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Ensuite, changez les lignes de code suivantes dans le fichier SceneDelegate.swift
.
window.rootViewController = UIHostingController(rootView: ContentView())
en
window.rootViewController = HostingController(rootView: ContentView())
Ceci est documenté dans le [Guide de transition de l'interface utilisateur d'iOS 7][1], auquel vous devez avoir un identifiant de développeur Apple pour accéder directement. L'extrait pertinent :
Parce que la barre d'état est transparente, la vue derrière elle apparaît à travers. [...] Utilisez une constante
UIStatusBarStyle
pour spécifier si le contenu de la barre d'état doit être foncé ou clair :
UIStatusBarStyleDefault
affiche un contenu sombre. [...]
UIStatusBarStyleLightContent
affiche un contenu clair. À utiliser lorsque du contenu sombre se trouve derrière la barre d'état.
Également susceptible d'être intéressant :
Sous iOS 7, vous pouvez contrôler le style de la barre d'état à partir d'un contrôleur de vue individuel et le modifier pendant l'exécution de l'application. Pour adopter ce comportement, ajoutez la clé
UIViewControllerBasedStatusBarAppearance
au fichierInfo.plist
d'une application et donnez-lui la valeurYES
.
Je vous recommande vivement de jeter un coup d'œil à ce document, auquel vous pouvez accéder avec votre identifiant de développeur Apple.
Il semble que ce soit un problème avec la version actuelle de Xcode et iOS 7.
Vous trouverez du contenu connexe sur les forums des développeurs d'Apple dans [une recherche de UIStatusBarStyleLightContent dans "iOS 7 Beta Livability" sur les forums des développeurs d'Apple][1]* (actuellement 32 messages).
Je suis tombé dessus en essayant de le régler sur la version light.
(Ceci est juste un suivi de la réponse d'Aaron).