Xcode Masquer la barre d'état blanche ios 10

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é)

entrez la description de l'image ici

code dans VC avec barre d'état masquée

entrez la description de l'image ici

parameters .plist

entrez la description de l'image ici

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"

entrez la description de l'image ici

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];