2017-10-03 2 views
7

J'essaie de cacher la barre d'état dans un de mes UIViewControllers (Swift 4).hide barre d'état swift 4

  • Tout d'abord, je mis Voir barre d'état avec contrôleur apparence à OUI dans Info.plist.

  • Je l'emporterait sur la propriété prefersStatusBarHidden dans mon contrôleur:


override var prefersStatusBarHidden: Bool { 
    return true 
} 

  • Et viewDidLoad(), j'ai ajouté setNeedsStatusBarAppearanceUpdate() fonction pour forcer à lire la propriété prefersStatusBarHidden.

Après tout cela, je vois encore la barre d'état sur ce UIViewController.

Quelqu'un peut-il m'aider, s'il vous plaît?

+0

Peut-être que si vous ajoutez un code, il sera helpfull de faire une réponse – Kalamarico

+0

voir ce https: // stackoverflow .com/questions/38876249/cant-hide-status-bar-swift-3/38876435 # 38876435 –

+0

@ Anbu.Karthik La réponse que vous avez liée est quelque chose que le PO a déjà fait. – the4kman

Répondre

0

Essayez de vérifier Masquer la barre d'état sous la section générale des paramètres de votre projet.

Hide status bar option under Project settings/General

+0

merci pour la réponse, mais je n'ai pas besoin de cacher la barre d'état pour l'application entière, juste pour un UIViewController personnalisé –

+0

Ce paramètre masque tout d'abord la barre d'état et permet de s'assurer que la barre d'état est masquée dans de nombreux cas comme celui-ci. – the4kman

6

Vous pouvez masquer la barre d'état en tout ou partie de vos contrôleurs de vue en ajoutant simplement ce code:

override var prefersStatusBarHidden: Bool { 
    return true 
    } 

Tout contrôleur de vue contenant ce code permet de masquer la barre d'état par défaut.

Si vous souhaitez animer la barre d'état ou arrière, il suffit d'appeler setNeedsStatusBarAppearanceUpdate() sur votre contrôleur de vue - qui forcera prefersStatusBarHidden à lire à nouveau, à quel point vous pouvez retourner une valeur différente. Si vous le souhaitez, votre appel à setNeedsStatusBarAppearanceUpdate() peut se trouver à l'intérieur d'un bloc d'animation, ce qui permet de masquer ou d'afficher la barre d'état de manière fluide.

+0

L'OP a déjà configuré 'prefersStatusBarHidden'. – the4kman

+0

J'ai essayé tout cela, même UIApplication.shared.isStatusBarHidden = true dans viewDidLoad(), mais la barre d'état est toujours là ... J'ai lu swift 4 change log et il n'y a rien à propos de changer prefersStatusBarHidden .. –

+0

Ce que j'ai fait sur mon Swift 4 projet était seulement ajouter le remplacement ci-dessus et rien d'autre et cela a fonctionné. Ne pas besoin de changer le fichier Info.plist et n'a pas besoin d'appeler setNeedsStatusBarAppearanceUpdate() – ffabri

0

Aucun de ceux-ci a travaillé pour moi soit travaillant sur un projet converti en iOS 11. Voici ce que j'ai fait. J'ai ajouté ce code dans le AppDelegate

func application(_ application: UIApplication, 
    didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool 
{ 
    application.isIdleTimerDisabled = true 
    application.isStatusBarHidden = true 
    return true 
} 
2

Essayez réglage « Afficher la barre d'état avec contrôleur apparence » drapeau Info.plist YES. Cela forcera l'application à appeler la propriété prefersStatusBarHidden: Bool sur chaque contrôleur de vue.

View controller-based status bar appearance flag

1

Utilisez le code suivant UIApplication.shared.isStatusBarHidden = true

c'est la seule chose que je trouve que travaille dans iOS11. vous pouvez écrire en didFinishLaunchingWithOptions ou en 'viewWillAppear' de vous BaseViewController Enjoy.

2

Vous avez probablement trouvé votre propre solution à ce déjà, mais je l'ai eu à travailler de cette façon:

override func viewWillAppear(_ animated: Bool) { 
    // Sets the status bar to hidden when the view has finished appearing 
    let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView 
    statusBar.isHidden = true 
} 

override func viewWillDisappear(_ animated: Bool) { 
    // Sets the status bar to visible when the view is about to disappear 
    let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView 
    statusBar.isHidden = false 
}