web-dev-qa-db-fra.com

Sur iOS8, l'affichage de mon application en mode paysage masquera la barre d'état, mais sur iOS 7, la barre d'état est affichée dans les deux orientations.

Je souhaite que la barre d'état soit affichée dans les deux orientations dans iOS 8; il est affiché correctement dans iOS 7.

navigationController.isNavigationBarHidden renvoie NO.

Pourquoi iOS 8 fait-il cela?

41
Tim Nuwin

Pour afficher la barre d'état en mode paysage dans ios 8, essayez la méthode suivante.

- (BOOL)prefersStatusBarHidden {
    return NO;
}

Version rapide

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

Swift 3, Xcode 8, iOS 10,/* ViewController.Swift * /

override var prefersStatusBarHidden: Bool {
        return false
    }
49
Vidhi

La solution de Jageen est probablement la meilleure, avec juste un changement mineur: au lieu d’utiliser viewDidLoad, il vaut mieux utiliser application:didFinishLaunchingWithOptions:.

C'est fondamentalement un processus en deux étapes: 

1). Définissez "Afficher l'apparence de la barre d'état basée sur le contrôleur" sur NO, dans le fichier Info.plist de votre projet. 

2) Forcez le statut masqué de la barre d'état sur NO, dans application:didFinishLaunchingWithOptions:, à l'aide du code suivant:

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

Et voila!

Remarque: Il est important d'utiliser les deux instructions setStatusBarHidden:withAnimation ci-dessus pour forcer l'état masqué de la barre d'état.

9
Mustafa

Ce n'est pas un problème mais une fonctionnalité d'un iOS 8. La barre d'état sera masquée en mode paysage dans iOS 8, même les applications d'Apple ont également le même comportement.

5
Ganesh Guturi

J'ai eu le même problème! Fixé en ajoutant ceci à viewDidLoad

  [self setNeedsStatusBarAppearanceUpdate];

Et cela à la mise en œuvre elle-même

-(BOOL)prefersStatusBarHidden{
    return NO;
}
5
serg_ov

Ils nous gardent des emplois rémunérés en nous donnant plus de travail.

ou...

Ils ont apporté d'autres modifications qui font que les bits occupent plus d'espace qu'auparavant. Avec iOS 7 et l'avènement d'éléments comme le "Guide de la barre de mise en page supérieure", la barre d'état est facilement accessible dans l'écran de glissement vers le bas, il est ainsi possible de récupérer l'espace de la barre d'état et de laisser entendre que de nombreuses personnes ont prédit que la barre d'état pourrait être obtenir progressivement comme une partie standard de l'interface utilisateur.

Les nouvelles tailles de périphériques suscitent également un certain engouement en raison des modifications apportées à iOS 8, qui permettent de coder plus facilement pour différentes tailles.

C'est de la pure spéculation, mais je ne pense pas que la barre d'état de paysage reviendra dans iOS 8.

4
DBD

Swift 3

override func viewDidLoad() {
        super.viewDidLoad()
        UIApplication.shared.setStatusBarHidden(true, with: .none)
        UIApplication.shared.setStatusBarHidden(false, with: .none)
///
    }

et ajoutez à l'intérieur Info.plist ceci:

UIViewControllerBasedStatusBarAppearance valeur booléenne NO

2
Vyacheslav

Swift 3 (Au 2 juin 2017)

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var prefersStatusBarHidden : Bool {
    return false
}
1
BennyTheNerd

Nous l'avons corrigé en suivant les étapes ci-dessus et en nous assurant que les paysages de gauche et de droite sont tous deux activés.

Sous Informations sur le projet/la cible/le déploiement

enter image description here

0
StackRunner