web-dev-qa-db-fra.com

Impossible de masquer la barre d'état dans iOS7

Je viens de mettre à niveau mon iPhone 5 iOS 7 vers la version quatre bêta. Désormais, lorsque je lance mon application depuis Xcode 5 sur cet iPhone, la barre d’état ne se cache pas, même s’il le devrait.

Ne fonctionne pas:

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

Ne fonctionne pas:

[UIApplication sharedApplication].statusBarHidden = YES;

Impossible de se connecter à Apple Forums des développeurs

267

dans votre fichier de liste d'applications, ajoutez une ligne, appelez-la "Afficher l'apparence de la barre d'état basée sur le contrôleur" et définissez-la sur NON.

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

An example adding View Base Controller to your Info settings in Xcode

557
satgi

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

- (BOOL)prefersStatusBarHidden {
    return YES;
}
277
invoodoo

Dans la Pliste, ajoutez les propriétés suivantes.

-> Status bar is initially hidden = OUI

-> View controller-based status bar appearance = NO

Ajoutez les deux - la barre d'état va maintenant disparaître.

84
user1179912

Pour masquer la barre d'état dans une vue unique, vous devez utiliser:

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

Au début, cela ne fonctionnait pas pour moi, puis une scie dans la documentation de cette méthode disait: // 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 réglée sur NO. Et puis ça a marché.

53
Debora Fortini

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 ajouter ceci

    View-Controller Based Status Bar Appearance = NO
    
16
Shaik Riyaz

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

View-Controller Based Status Bar Appearance = NO

Cette valeur est définie sur OUI par défaut. Si vous le définissez sur NO, vous pouvez utiliser les méthodes héritées. Si vous laissez la valeur sur OUI, vous pouvez toujours masquer la barre d'état, mais il appartient à chaque sous-classe de contrôleur de vue de votre application de remplacer: prefersStatusBarHidden pour renvoyer OUI.

Chaque fois que votre application a besoin que l'apparence ou la visibilité de la barre d'état change, et que l'apparence de la barre d'état basée sur View-Controller soit définie sur YES, votre contrôleur de vue le plus externe doit appeler:

setNeedsStatusBarAppearanceUpdateAnimation

16
jaredsinclair

De nombreuses combinaisons sont suggérées pour ce problème, mais le problème est que iOS 6 et 7 utilisent différentes méthodes pour masquer la barre d'état. Je n'ai jamais réussi à définir les paramètres de plist pour activer le comportement de style iOS6 sur iOS 7, mais si vous construisez votre application pour prendre en charge iOS 6+, vous devez utiliser 3 méthodes à la fois pour garantir qu'un contrôleur de vue particulier masque le statut. 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 quels que soient les paramètres de votre plist.

11
SaltyNuts

J'ai dû faire les deux modifications 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 à 'info' dans les paramètres 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];
7
Peter Y

Ajoutez simplement ces 2 lignes dans le fichier info.plist. Cela corrigera le problème 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 cochez la case "Style de la barre d'état ... Masquer lors du lancement de l'application". Cela fonctionnera.

6
Sid

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];
}
6
Rajesh Loganathan

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

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
4
bartburkhardt

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 un category sur UIViewController et à le remplacer par prefersStatusBarHidden. De cette façon, vous n'avez pas à écrire cette méthode dans chaque contrôleur de vue.

UIViewController + HideStatusBar.h

#import <UIKit/UIKit.h>

@interface UIViewController (HideStatusBar)

@end

UIViewController + HideStatusBar.m

#import "UIViewController+HideStatusBar.h"

@implementation UIViewController (HideStatusBar)

//Pragma Marks suppress compiler 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
4
mike
  1. Dans la liste ajouter ----

    Afficher l'apparence de la barre d'état basée sur le contrôleur --- NON

  2. Dans chaque viewController write

    - (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
    }
    

Problème de barre d'état dans iOS 7, mais la cible doit être 5.1 et supérieure pour l'application

3
user2823580

-(BOOL)prefersStatusBarHidden { return YES; }

3
Thunderbird

Steps For Masquer la barre d'état dans iOS 7:

1.Allez dans le fichier info.plist de votre application.

2.And Set, Afficher l’apparence de la barre d’état basée sur le contrôleur: Boolean NO

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

3
chandrika

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

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

Pour afficher la barre d'état, utilisez:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
3
oscar castellon

Dans le fichier Info Plist Ajouter 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: NO

2
user842553

Beaucoup de réponses sur ce fil fonctionnent, mais je crois comprendre que si vous essayez de faire quelque chose de dynamique, vous devrez éventuellement appeler:

[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
2
darkheartfelt

J'ai essayé toutes les 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 paramètres avaient été modifiés quelque part. J’ai décidé de construire un projet entièrement nouveau pour lui et après le simple paramétrage suivant: "Status bar is initially hidden = YES" et "View controller-based status bar appearance = NO" "comme indiqué par beaucoup d’autres, cela fonctionnait correctement (c.-à-d. Aucune barre d’état).

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 construire un nouveau projet.

1
user1529408

Pour 2019 ...

Pour créer une application avec AUCUNE barre d'état,

Cliquez sur info.plist, cliquez avec le bouton droit de la souris sur "Ajouter une ligne".

Ajoutez ces deux, avec ces paramètres:

enter image description here

C'est tout ce qu'on peut en dire.

1
Fattie

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

- (BOOL)prefersStatusBarHidden
    {
        return YES;
    }
1
Bhoopi

Vous pouvez vérifier ceci code , pod IViewController + ODStatusBar

0
Alex Nazaroff

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:

  • set View controller-based status bar appearancetoNO dans .plist et dans application: didFinishLaunchingWithOptions: set: [application setStatusBarHidden:YES];

    Remarque: setStatusBarHidden: obsolète

OR

  • dans les paramètres du projet -> onglet Général -> informations de déploiement

    Cochez la case Hide Status bar.

0
Lal Krishna

Pour Swift 2.0+ IOS 9

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