Je veux une barre d'état blanche dans mon application. Pour cela, je règle View controller-based status bar appearance
sur NO
et Status bar style
sur UIStatusBarStyleLightContent
. Mais maintenant, je dois masquer la barre d'état dans certains contrôleurs de vue. Pour le cacher, je dois définir View controller-based status bar appearance
sur YES
et ajouter - (BOOL)prefersStatusBarHidden {return YES;}
. Mais la barre d'état est noire maintenant. Il est noir lorsque View controller-based status bar appearance
est YES
et blanc si NO
. La question est donc de savoir comment définir et masquer la barre d'état blanche.
UPD: code Dans VC pour lequel je souhaite afficher une barre d'état blanche (prefferdSTatusBarStyle
non appelée)
code dans VC avec barre d'état masquée
paramètres .plist
Le résultat est une barre d'état noire, qui se cache dans certains VC
UPD2:
Je sais que c'est mauvais d'utiliser des méthodes obsolètes, mais avec [[UIApplication sharedApplication] setStatusBarHidden:YES];
, tout fonctionne comme je le veux. Si quelqu'un a une meilleure solution s'il vous plaît faites le moi savoir.
Ceci est la version Swift:
Pour masquer la barre d'état ou modifier son apparence, vous devez remplacer les propriétés suivantes dans votre contrôleur de vue lui-même.
override var prefersStatusBarHidden: Bool{
return true
}
ce qui précède masque la barre d’état et en-dessous si vous souhaitez le définir en blanc:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Dans votre fichier Plist, ajoutez la propriété View controller-based status bar appearance
Bool et définissez-la sur YES.
Maintenant, dans votre contrôleur de vue, ajoutez les méthodes comme ci-dessous:
// TO MAKE STATUS BAR WHITE
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
// TO MAKE STATUS BAR BLACK
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
// RETURN TRUE TO HIDE AND FALSE TO SHOW STATUS BAR
override func prefersStatusBarHidden() -> Bool {
return true
}
Pour Objective-C
- (BOOL)prefersStatusBarHidden {
return NO;
}
-(UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
Pour supprimer le code redondant, vous pouvez créer une BaseViewController
en tant que sous-classe de UIViewController
et ajouter les méthodes dans cette classe. Et substituez la méthode dans la classe qui nécessite un changement.
si votre viewcontroller est intégré à UInavigationController, essayez d’écrire ce code dans votre
-(BOOL)prefreStatusBarHidden
{
return [self.navigationController prefersStatusBarHidden];
}