Afficher/masquer navigationBar lorsque la vue est poussé/sauté dans iOS 8
Hi collègues développeurs,
Je suis surpris que je n'ai pas trouver toutes les informations sur ce cas d'utilisation particulier pour iOS 8. Je m'explique, j'ai une manette de navigation de la pile, le premier point de vue a c'est navigationBar cachée, lorsque l'utilisateur clique sur une cellule d'un nouveau point de vue est poussé et j'ai besoin de la barre de navigation affichés sur cette vue de revenir en arrière (évidemment). Sur iOS 7, il est juste question d'ajouter cette ligne dans viewWillAppear :
[self.navigationController setNavigationBarHidden:NO animated:YES];
Et il fonctionne comme un charme. Mais comme d'iOS 8 j'ai du mal à avoir le même comportement. Pour l'instant j'ai réussi à faire la même chose en utilisant :
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
- (void)viewDidLoad {
[super viewDidLoad];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")) {
self.automaticallyAdjustsScrollViewInsets = NO;
self.edgesForExtendedLayout = UIRectEdgeNone;
self.collectionView.contentInset = UIEdgeInsetsMake(self.navigationController.navigationBar.frame.size.height, 0, 0, 0);
} }
Et la modification de la contentInset de mon collectionsView /tableviews ce que j'ai besoin d'afficher. Ça va marcher, mais c'est une vraie douleur dans le * (parfois, le contenu de l'encart n'est pas nécessaire si l'utilisateur vient d'une nouvelle viewcontroller).
Pour contexte le projet a d'abord été développé pour gérer iOS 6 et 7, donc pas de storyboard, tout est fait par programmation. J'ai porté à l'application à un plus moderne de la base de code et en fait universelle.
Suis-je raté quelque chose ? Est-il une meilleure façon de gérer que dans iOS 7/8 ?
- Nous avons eu le même problème. Il semble que cela a été résolu avec iOS 8.1 si.
- J'ai même problème avec UIPageViewController dans iOS 8. Veuillez me faire savoir toutes les suggestions concernant la question si vous en avez. Vous pouvez accéder à ma question thread ci-dessous. stackoverflow.com/questions/27420396/...
Vous devez vous connecter pour publier un commentaire.
Vous voulez le cacher dans
viewWillAppear
et de l'afficher à nouveau enviewWillDisappear
Je pensais que la ligne est :
J'ai vérifier et ça fonctionne bien pour moi . . .
Essayez-la . . .
Faire cette animation pour obtenir une transition en douceur:
Sur
iOS 8
, il semblenavigationBarHidden
n'est pas le même quenavigationBar.hidden
.(Je suis bâtiment avec la cible de déploiement
iOS 6
-- ne sais pas si cela fait une différence).Dans mon code, en regardant le débogueur avec consécutives lignes:
b1
montre, comme fausse etb2
comme vrai.Réglage
self.navigationController.navigationBar.hidden = false
résout le problèmeJ'ai eu le même problème et j'ai vraiment tout essayé, mais la barre de navigation n'est pas venue. Finalement, j'ai réalisé que j'avais ce code dans mon premier-vue-contrôleur 🙂
J'ai pensé, quelqu'un d'autre qui vérifie cette question, mon erreur, j'ai donc pensé qu'il pourrait la peine de mentionner.
Il existe de multiples techniques. Le moins de friction que l'on serait:
Mais qui vous donnent cette résultat.
Sinon, je conseille à mes nouvellement construit HidesNavigationBarWhenPushed bibliothèque. Voici l'explication de la façon dont il fonctionne et pourquoi je l'ai construit.