Impossible de masquer la barre d’état dans iOS7

Je viens de mettre à jour ma version bêta de l’iPhone 5 iOS 7 à quatre. Maintenant, lorsque je lance mon application depuis Xcode 5 sur cet iPhone, la barre d’état ne se cache pas, même si elle le devrait.

Ne fonctionne pas:

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

Ne fonctionne pas:

 [UIApplication sharedApplication].statusBarHidden = YES; 

Impossible de se connecter aux forums de développeurs Apple

dans votre fichier plist d’applications, ajoutez une ligne appelez-la “Afficher l’apparence de la barre d’état basée sur le contrôleur” et réglez-la sur

Notez que cela ne fonctionne tout simplement pas si vous utilisez UIImagePickerController dans l’application.

de http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/ , la solution de mgiroux

Un exemple d'ajout de View Base Controller à vos paramètres Info dans Xcode

Ajouter une méthode dans votre contrôleur de vue.

 - (BOOL)prefersStatusBarHidden { return YES; } 

Dans le Plist, ajoutez les propriétés suivantes.

-> La Status bar is initially hidden = OUI

-> View controller-based status bar appearance = NO

Ajoutez les deux – maintenant la barre d’état disparaîtra.

Pour masquer la barre d’état sur une vue unique, vous devez utiliser:

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

Au début, cela ne fonctionnait pas pour moi, et ensuite, la documentation de cette méthode indiquait: // La définition de statusBarHidden ne fait rien si votre application utilise le système de barre d’état par défaut basé sur UIViewController.

Cela doit être fait sur le fichier plist, en ajoutant la clé View controller-based status bar appearance définie sur NO . Et puis ça a fonctionné.

Pour masquer la barre d’état dans iOS7, vous avez besoin de 2 lignes de code

  1. inapplication: (UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions write

     [application setStatusBarHidden:YES]; 
  2. dans info.plist append ceci

     View-Controller Based Status Bar Appearance = NO 

Pour utiliser la méthode UIApplication héritée pour masquer / afficher la barre d’état, votre application doit définir une valeur de plist pour iOS 7:

View-Controller Based Status Bar Appearance = NO

Cette valeur est définie sur YES par défaut. Si vous le changez en NON, vous pouvez utiliser les méthodes héritées. Si vous laissez la valeur définie sur YES, vous pouvez toujours masquer la barre d’état, mais chaque sous-classe de contrôleur de vue de votre application doit la remplacer: prefersStatusBarHidden pour retourner YES.

Chaque fois que votre application a besoin de modifier l’apparence ou la visibilité de la barre d’état et que l’apparence de la barre d’état basée sur le contrôleur de vue est définie sur YES, votre contrôleur de vue externe doit appeler:

setNeedsStatusBarAppearanceUpdateAnimation

Il y a tellement de combinaisons suggérées pour ce problème, mais le problème est que iOS 6 et 7 utilisent des méthodes différentes pour masquer la barre d’état. Je n’ai jamais réussi à configurer les parameters plist pour activer le comportement de type iOS6 sur iOS 7, mais si vous construisez votre application pour prendre en charge iOS 6+, vous devez utiliser 3 méthodes en même temps bar:

 // for ios 7 - (BOOL)prefersStatusBarHidden{ return YES; } // for ios 6 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[UIApplication sharedApplication] setStatusBarHidden:YES]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; // explicitly set the bar to show or it will remain hidden for other view controllers [[UIApplication sharedApplication] setStatusBarHidden:NO]; } 

Cela devrait fonctionner indépendamment de vos parameters plist.

J’ai dû faire les deux changements ci-dessous pour masquer la barre d’état:

Ajoutez ce code au contrôleur de vue où vous souhaitez masquer la barre d’état:

 - (BOOL)prefersStatusBarHidden { return YES; } 

Ajoutez ceci à votre fichier .plist (allez dans “info” dans les parameters de votre application)

 View controller-based status bar appearance --- NO 

Ensuite, vous pouvez appeler cette ligne pour masquer la barre d’état:

 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 

Ajoutez simplement ces 2 lignes dans le fichier info.plist. Il fera le correctif pour iOS7 et les versions antérieures.

  • La barre d’état est initialement masquée = OUI
  • Afficher l’apparence de la barre d’état basée sur le contrôleur = NO

Naviguez jusqu’au projet et sélectionnez Cibles -> Général et la case à cocher “Style de barre d’état … Masquer lors du lancement de l’application” sera cochée. Cela fonctionnera.

Essayez cette méthode simple:

 - (void)viewWillAppear:(BOOL)animated { [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; } - (void)viewWillDisappear:(BOOL)animated { [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; } 

La seule chose qui a fonctionné pour moi est d’append ce qui suit dans votre plist

 UIStatusBarHidden  UIViewControllerBasedStatusBarAppearance  

La méthode la plus simple que j’ai trouvée pour masquer la barre d’état dans l’ensemble de l’application consiste à créer une category sur UIViewController et à prefersStatusBarHidden . De cette façon, vous n’avez pas à écrire cette méthode dans chaque contrôleur de vue.

UIViewController + HideStatusBar.h

 #import  @interface UIViewController (HideStatusBar) @end 

UIViewController + HideStatusBar.m

 #import "UIViewController+HideStatusBar.h" @implementation UIViewController (HideStatusBar) //Pragma Marks suppress comstackr warning in LLVM. //Technically, you shouldn't override methods by using a category, //but I feel that in this case it won't hurt so long as you truly //want every view controller to hide the status bar. //Other opinions on this are definitely welcome #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation" - (BOOL)prefersStatusBarHidden { return YES; } #pragma clang diagnostic pop @end 

-(BOOL)prefersStatusBarHidden { return YES; }

  1. En plist append —-

    Afficher l’apparence de la barre d’état basée sur le contrôleur — NO

  2. Dans chaque viewController, écrivez

     - (void) viewDidLayoutSubviews { CGRect viewBounds = self.view.bounds; CGFloat topBarOffset = 20.0; viewBounds.origin.y = -topBarOffset; self.view.bounds = viewBounds; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style } 

Pour la barre d’état dans iOS 7, mais la cible doit être 5.1 et supérieure pour l’application

Steps For Hide la barre d’état dans iOS 7:

1. Accédez au fichier info.plist de votre application.

2.Ensuite, vue de la barre d’état basée sur le contrôleur View: Boolean NO

J’espère que j’ai résolu le problème de la barre d’état …..

Pour iOS 7 dans une seule vue, utilisez la méthode viewWillappear:

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

Pour afficher la barre d’état, utilisez:

 [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO]; 

Dans le fichier Info Plist Ajoutez une ligne pour la propriété suivante

Nom de la propriété: Afficher l’apparence de la barre d’état basée sur le contrôleur

Valeur: NON

La plupart des réponses à ce sujet fonctionnent, mais si je tente de faire quelque chose de dynamic, vous devrez éventuellement appeler:

 [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)]; 

Essayez d’append la méthode suivante au contrôleur de la vue racine de votre application:

 - (BOOL)prefersStatusBarHidden { return YES; } 

J’ai essayé toutes ces options affichées ici sur mon projet et elles ne fonctionneraient pas. Je pensais que cela pouvait être dû au fait que j’avais mis à jour mon Xcode , puis l’application sur iOS 7 et que certains parameters avaient été perturbés quelque part. J’ai décidé de créer un projet complètement nouveau pour lui et après un simple réglage: “La Status bar is initially hidden = YES ” et ” View controller-based status bar appearance = NO ” ).

Donc, mon conseil si vous travaillez sur un projet qui a été mis à jour vers iOS 7 à partir d’une ancienne version et qui a essayé toutes les autres options est de créer un nouveau projet.

Vous pouvez vérifier ce code , pod UIViewController + ODStatusBar

Pour Swift 2.0+ IOS 9

 override func prefersStatusBarHidden() -> Bool { return true } 

Pour masquer la barre d’état d’un viewController spécifique

 - (BOOL)prefersStatusBarHidden { return YES; } 

Pour définir la barre d’état Masqué pour l’application:

  • application: didFinishLaunchingWithOptions: View controller-based status bar appearance sur NO dans .plist et dans l’ application: didFinishLaunchingWithOptions: set: [application setStatusBarHidden:YES];

    Note: setStatusBarHidden: déconseillé

OU

  • dans Paramètres du projet -> onglet Général -> Informations sur le déploiement

    Cochez la case Hide Status bar .

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

Je ne sais pas pourquoi vous “ne pouvez pas vous connecter aux forums de développeurs Apple”, mais (sans violer la NDA), vous pouvez également masquer votre barre d’état via Xcode. C’est un paramètre général sur la cible de votre application. entrer la description de l'image ici