web-dev-qa-db-fra.com

Masquer la barre d'état dans ios 9

Comment cachez-vous la barre d'état dans iOS 9?

C'est maintenant obsolète:

 [UIApplication sharedApplication] setStatusBarHidden:YES];
32
cdub

Swift-3

 override var prefersStatusBarHidden: Bool {  
    return true  
}  

J'ai eu l'information de ici

  • Remplacez func par var

  • Supprimer ()

  • Changement -> à :

Cela fonctionne car une variable calculée a une fonction de lecture, de sorte que la fonction que vous avez implémentée avant devient simplement la fonction de lecture.


2016 et après: chose simple comme

Sur votre info.plist, ajoutez les deux propriétés suivantes pour statusBar Hidden

Afficher l'apparence de la barre d'état basée sur le contrôleur (Boolean: NO)

La barre d'état est initialement masquée (Boolean: YES)

Par source

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

ou

enter image description here


Anciennes réponses! ...

  1. ajouter application.statusBarHidden dans didFinishLaunchingWithOptions

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    application.statusBarHidden = YES;
    return YES;
    }
    

et ajouter

  1. dans info.plist Ajoute ça View controller-based status bar appearance set NO

    View controller-based status bar appearance = NO
    

ensemble caché basé sur viewcontroller

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

Objectif -C

- (BOOL)prefersStatusBarHidden {
    return YES;
}

Rapide jusqu'à 2

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

(BON) 2016.5.17 dans iOS 9.0 a bien fonctionné.

Réponse mise à jour

  1. Aller au fichier Info.plist
  2. Survolez l'une de ces lignes et un bouton (+) et (-) apparaîtra.
  3. Cliquez sur le bouton plus pour ajouter une nouvelle clé
  4. Tapez commencez par V majuscule et le premier choix sera automatiquement Afficher l’apparence de la barre d’état basée sur le contrôleur . Ajoutez cela comme la clé.
  5. Définissez la valeur sur "NO"
  6. Allez à vous AppDelegate.m pour Objective-C ( pour Swift langue: AppDelegate.Swift)
  7. Ajouter le code, à l'intérieur de la méthode

Pour Objective-C:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [application setStatusBarHidden:YES];

    return YES;
}

Pour Swift:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
    application.statusBarHidden = true

    return true
}
81
Anbu.Karthik

dans info.plist, ajoutez les deux propriétés suivantes.

View controller-based status bar appearance (NO)

Status bar is initially hidden (YES)
16
Jamil

Je sais que la documentation de setStatusBarHidden: ne mentionne pas à quoi sert plutôt. Mais l'en-tête de UIApplication le fait.

// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]");
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_DEPRECATED_IOS(3_2, 9_0, "Use -[UIViewController prefersStatusBarHidden]");

Ici, il est indiqué que vous devez utiliser le prefersStatusBarHidden sur UIViewController et utiliser les styles de barre d'état basés sur le contrôleur de vue.

Il ne vous reste plus qu'à configurer si le contrôleur de vue doit afficher ou non la barre d'état. Ainsi :

- (BOOL)prefersStatusBarHidden {
   return YES;
}
7
rckoenes

Voici comment renvoyer facilement un contrôle sur la visibilité de la barre d'état pour iOS 9 + et Swift 3 +:

  1. Ajouter View controller-based status bar appearance clé avec YES valeur à Info.plist.
  2. Ajoutez cette variable au contrôleur de vue:

    private var isStatusBarHidden = false {
        didSet {
            setNeedsStatusBarAppearanceUpdate()
        }
    }
    
  3. Remplacer la propriété prefersStatusBarHidden:

    override var prefersStatusBarHidden: Bool {
        return isStatusBarHidden
    }
    

C'est ça. Vous pouvez maintenant appeler isStatusBarHidden = true et isStatusBarHidden = false quand tu veux.

6
Andrey Gordeev

Une approche simple consisterait à définir le windowLevel de l’application sur normal ou sur statusBar en fonction de vos besoins.

Objective-C

Pour masquer la barre d'état

 UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelStatusBar;

Pour afficher la barre d'état

 UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelNormal;

Ajoutez également le Key ( Apparence de la barre d'état du contrôleur d'affichage ) avec la valeur booléenne NO.

enter image description here

2
daris mathew

Si pour une raison quelconque vous avez besoin de View controller-based status bar appearance égal à YES (par exemple, pour garder la barre d'état blanche)

sur la méthode didFinishLaunchingWithOptions d'AppDelegate ou partout où vous configurez votre navigationController:

yourNavigationController.navigationBar.barStyle = .black

ensuite, utilisez la réponse géniale de alex-staravoita et ajoutez ce code partout où vous cachez la barre d'état:

override var preferredStatusBarStyle: UIStatusBarStyle {
  return .lightContent
}

Je ne suis pas sûr que ce soit la bonne manière d'obtenir ce résultat, mais cela a fonctionné pour moi et j'espère que cela aidera aussi quelqu'un d'autre :)

1
budidino

Dans la plupart des iOS, cela fonctionnera. J'ai testé avec iOS 10.

  1. Ouvrir info.plist
  2. "Afficher l'apparence de la barre d'état basée sur le contrôleur" défini sur NO
  3. "La barre d'état est initialement masquée" défini sur OUI
  4. Terminé
0
emraz