Final EDIT
(Plutôt que d'avoir une question trop longue avec des éditions faisant une édition finale pour clarification, veuillez voir les autres éditions si nécessaire).
Configuration du contrôleur
J'ai une application qui est configurée comme suit :
InitialViewController (sous-classe de ECSlidingViewController )
Contrôleur de navigation principal (sous-classe de UINavigationController
)
Contrôleur principal de la vue d'accueil (sous-classe de UIViewController
)
En el viewDidLoad
du initialViewController, je charge le contrôleur de navigation principal avec le Home View Controller comme Root.
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainNavVC"];
La question
Lors du premier chargement de l'application, la barre d'état et la barre de navigation sont séparées.
C'est l'effet recherché.
Cependant, je charge ensuite un contrôleur de vue modal et le ferme, en utilisant les méthodes standard :
[self performSegueWithIdentifier:@"LoadSelectOpponentVC" sender:self];
Puis terminez par :
[self dismissViewControllerAnimated:YES completion:nil];
Cela a pour conséquence que le contrôleur de navigation principal (qui tient le contrôleur de la vue d'accueil) affiche la barre d'état de manière incorrecte et en se chevauchant :
Essais
- Le paramètre plist est réglé sur OUI -
View controller-based status bar appearance
- J'ai essayé de régler le
edgesForExtendedLayout
à l'aucun pertinent, mais aucun changement.
Enregistrement
J'ai essayé de déconnecter certains cadres pour voir où le problème se produit :
Au premier chargement :
Main Nav VC - Cadre de visualisation - {{0, 0}, {320, 480}}
Main Nav VC - Nav Bar Frame - {{0, 0}, {320, 44}}
Initial VC - View Frame - {{0, 0}, {320, 480}}
Home VC - View Frame - {{0, 0}, {320, 480}} -- viewDidLoad Home VC
Home VC - View Frame - {{0, 64}, {320, 416}} -- viewWillAppear Home VC
--- After Modal is opened/closed ----
Home VC - View Frame - {{0, 64}, {320, 416}} -- viewWillAppear Home VC
Main Nav VC - View Frame - {{0, 0}, {320, 480}} -- viewWillAppear Main Nav
Main Nav VC - Nav Bar Frame - {{0, 20}, {320, 44}} -- viewWillAppear Main Nav
Home VC - View Frame - {{0, 44}, {320, 436}} -- viewDidAppear Home VC
0 votes
"Étendre sous les barres supérieures" ne devrait affecter que la relation de votre vue avec la barre de navigation.
0 votes
Avez-vous essayé de déplacer le cadre de la barre de navigation vers le bas, de la hauteur de la barre d'état ?
0 votes
Mais où cela doit-il se faire ? Pouvez-vous fournir une réponse à cette question ?
0 votes
Même problème ici... à la recherche d'une solution.
0 votes
Avez-vous trouvé une solution ? Même problème pour moi, lorsque j'imprime le cadre de la barre de navigation pour le premier contrôleur, il affiche (x,y)->(0,20) puis lorsque je pousse un contrôleur de vue, il affiche (x,y)->(0,0). Comment est-il devenu 0 ?
0 votes
@StuartM avez-vous trouvé une solution à ce problème ?
0 votes
@mattsven - Non, nous avons dû adopter une approche différente en raison des contraintes de temps. Nous avons laissé la question de l'OS ouverte car toutes les réponses sont pertinentes et constituent des solutions de contournement du problème. Merci
0 votes
@StuartM Ouais, la correction était en fait très simple, il s'agissait de manipuler centerY -
navBar.centerY += 20
lorsque la barre d'état disparaît, et c'est tout.