Barre d'état dans iOS : 5 erreurs fatales avec la couleur du texte (Swift)

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Comment changer la couleur du texte de la barre d'état dans iOS : 5 erreurs fatales et comment les éviter

\n\n

Chaque développeur iOS a déjà été confronté à cette situation : vous écrivez une application, vous choisissez un fond sombre parfait pour l'écran, mais la barre d'état (Status Bar) affiche toujours un texte noir. Cela semble au moins non professionnel, et les utilisateurs écrivent dans les avis : « on ne voit rien ». Une douleur familière ?

\n\n

La question « How to change Status Bar text color in iOS » est l'une des plus populaires sur Stack Overflow avec des dizaines de milliers de vues. Le problème est que les débutants (et pas seulement) commettent les mêmes erreurs encore et encore. Dans cet article, nous allons analyser 5 erreurs fatales qui ruinent votre barre d'état, et montrer comment les corriger en Swift. C'est parti !

\n\n

Pourquoi la barre d'état est-elle un casse-tête ?

\n\n

iOS est un système strict. Il ne vous permet pas de simplement colorier la barre d'état comme bon vous semble. Tout est géré via UIStatusBarStyle, et si vous ne connaissez pas le mécanisme exact, le code devient un jeu de devinettes. Analysons cela systématiquement.

\n\n

Erreur n°1 : Oublier le fichier Info.plist

\n\n

L'erreur la plus courante est d'essayer de modifier le style de la barre d'état sans l'autoriser dans la configuration du projet. Par défaut, iOS gère lui-même la barre d'état, et votre code est simplement ignoré.

\n\n
// ❌ Incorrect : le code existe, mais pas l'autorisation\noverride var preferredStatusBarStyle: UIStatusBarStyle {\n    return .lightContent\n}
\n\n

Solution : Ajoutez dans Info.plist la clé UIViewControllerBasedStatusBarAppearance et définissez-la sur YES. Sans cela, votre View Controller n'aura pas le droit de vote.

\n\n
<key>UIViewControllerBasedStatusBarAppearance</key>\n<true/>
\n\n

Maintenant, iOS demandera à chaque contrôleur : « Quel style de barre d'état veux-tu ? » — et votre code fonctionnera.

\n\n

Erreur n°2 : Mauvais emplacement pour le code

\n\n

De nombreux débutants écrivent preferredStatusBarStyle dans la méthode viewDidLoad() ou viewWillAppear(). Et ils sont surpris que rien ne change.

\n\n
// ❌ Incorrect : c'est une propriété, pas une méthode\noverride func viewDidLoad() {\n    super.viewDidLoad()\n    preferredStatusBarStyle = .lightContent // Ne fonctionnera pas !\n}
\n\n

Approche correcte : preferredStatusBarStyle est une propriété calculée (computed property) qu'iOS interroge à chaque fois qu'il doit mettre à jour la barre d'état. Elle doit être déclarée au niveau de la classe, pas à l'intérieur d'une méthode.

\n\n
// ✅ Correct\noverride var preferredStatusBarStyle: UIStatusBarStyle {\n    return .lightContent\n}
\n\n

Si vous devez changer le style dynamiquement (par exemple, lors du changement de thème), utilisez setNeedsStatusBarAppearanceUpdate() :

\n\n
var isDarkMode = false {\n    didSet {\n        setNeedsStatusBarAppearanceUpdate()\n    }\n}\n\noverride var preferredStatusBarStyle: UIStatusBarStyle {\n    return isDarkMode ? .lightContent : .default\n}
\n\n

Erreur n°3 : Ignorer le Navigation Controller

\n\n

Si votre application utilise UINavigationController, alors preferredStatusBarStyle du contrôleur enfant peut ne pas fonctionner. Pourquoi ? Parce que le Navigation Controller gère lui-même la barre d'état.

\n\n

Solution n°1 (simple) : Surcharger la propriété dans le Navigation Controller.

\n\n
class CustomNavigationController: UINavigationController {\n    override var preferredStatusBarStyle: UIStatusBarStyle {\n        return topViewController?.preferredStatusBarStyle ?? .default\n    }\n}
\n\n

Solution n°2 (propre) : Utiliser childForStatusBarStyle. C'est une méthode plus flexible qui délègue la gestion au contrôleur enfant.

\n\n
class CustomNavigationController: UINavigationC                

Blogs

Book Recommendations