setStatusBarHidden ne fonctionne pas

Dans mon UIViewController , j'ai:

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; [self.view sizeToFit]; } 

Pourtant, la vue ressemble à ceci:

entrez la description de l'image ici

Je suis sûr que ce code fonctionne. Je charge la vue d'un xib . Je n'ai rien fait d'autre à la barre d'état, comme changer son style. Quel pourrait être le problème?

Même lorsque je définis `application.statusBarHidden = YES" dans mon délégué d'application, je vois:

entrez la description de l'image ici

Dans le cadre de votre application, si l'option "Afficher l'apparence de la barre d'état basée sur le controller" est définie sur OUI, placez ce code dans le controller de vue dans lequel vous masquez la barre d'état:

 - (BOOL)prefersStatusBarHidden { return YES; } 

Sinon, si l'option "Afficher l'apparence de la barre d'état basée sur le controller" est définie sur NON, appelez ce qui suit lorsque vous souhaitez masquer la barre d'état.

 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; 

Si vous souhaitez masquer la barre d'état dans votre application, procédez comme suit:

Étape 1 :

entrez la description de l'image ici

Étape 2:

entrez la description de l'image ici

Étape 3:

Ajouter à votre applicationDelegate didFinishLaunchingWithOptions function

 application.statusBarHidden = YES; 

alors :

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { application.statusBarHidden = YES; } 

C'est parce que iOS 7 a changé la façon dont il traite de la barre d'état.

Définir UIViewControllerBasedStatusBarAppearance sur NO sur votre application Info.plist devrait fonctionner.

Vous pouvez afficher / masquer la barre d'état de votre application en utilisant le code suivant (Fonctionne sur IOS 7 – IOS 8 et IOS 9):

dans votre file projet .h ajoutez ce boolean:

 BOOL isShowStatus; 

Et dans le file .m ajoutez ceci:

 //To show the status bar: -(void)showTheStatusBar { isShowStatus = YES; [self setNeedsStatusBarAppearanceUpdate]; } //And to hide the status bar: -(void)hideTheStatusBar { isShowStatus = NO; [self setNeedsStatusBarAppearanceUpdate]; } - (BOOL)prefersStatusBarHidden { return !isShowStatus; } 

Il suffit de l'appeler de n'importe où, didload par exemple:

 - (void)viewDidLoad { [super viewDidLoad]; //To show the status bar: [self showTheStatusBar]; //Or to hide it: [self hideTheStatusBar]; } 

Pour moi cela fonctionne bien:

 - (BOOL) prefersStatusBarHidden {
     returnner YES;
 }

TOUJOURS dans la vue racine. Si vous faites cela dans une sous-vue ne fonctionnera pas parce que la visibilité de la barre d'état sera prise à partir de la vue parente.

Essayez d'append ceci après avoir masqué la barre d'état:

  [self.view setFrame:[self.view bounds]]; 

Dans votre appdelegate.m dans didFinishLaunchingWithOptions :

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { application.statusBarHidden = YES; } 

Quand je lance ton code:

entrez la description de l'image ici