Je veux une barre d'état blanche dans mon application. Pour cela, j'ai défini l' View controller-based status bar appearance
sur NO
et le Status bar style
sur UIStatusBarStyleLightContent
. Mais maintenant je dois cacher la barre d'état dans certains controllers de vue. Pour le cacher, je dois définir l' View controller-based status bar appearance
sur YES
et append - (BOOL)prefersStatusBarHidden {return YES;}
. Mais la barre d'état est noire maintenant. Il est noir lorsque l' View controller-based status bar appearance
est YES
et blanc si NO
. Donc, la question est, comment définir la barre d'état blanche et le cacher?
UPD: code dans VC que je veux avoir la barre d'état blanche ( prefferdSTatusBarStyle
non appelé)
code dans VC avec barre d'état masquée
parameters .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 methods obsolètes mais avec [[UIApplication sharedApplication] setStatusBarHidden:YES];
tout fonctionne comme je veux. Si quelqu'un a une meilleure solution s'il vous plaît faites le moi savoir.
vous pouvez définir en utilisant le style de la barre d'état xcode est "léger"
C'est la version rapide:
Pour masquer la barre d'état ou modifier son apparence, vous devez replace les propriétés suivantes dans votre controller de vue lui-même
override var prefersStatusBarHidden: Bool{ return true }
ce qui précède cache la barre d'état et ci-dessous si vous voulez le mettre en blanc:
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
Dans votre file plist, ajoutez la propriété Bool View controller-based status bar appearance
et définissez-la sur YES.
Maintenant, dans votre controller de vue, ajoutez les methods 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 faire de BaseViewController
une sous-class de UIViewController
et append les methods dans cette class. Et remplacez la méthode dans la class qui nécessite des modifications.
si votre viewcontroller est embedded dans UInavigationController, essayez d'écrire ce code dans votre
-(BOOL)prefreStatusBarHidden { return [self.navigationController prefersStatusBarHidden]; }
Vous pouvez le faire en définissant l'image d'arrière-plan de navigation dans votre viewcontroller de base.
UIImage *bgImage = [UIImage imageNamed:@"bg_navigationbar"]; [self.navigationController.navigationBar setBackgroundImage:bgImage forBarMesortingcs:UIBarMesortingcsDefault];