sur iOS 7, si j'utilise la méthode code> préfersstatusbarHenden code> et renvoie une variable d'instance qui peut être modifiée: et je change la variable d'instance, caché ainsi ainsi La barre d'état, la barre de navigation perd le 20 pt de hauteur que la barre d'état occupe. Je ne veux pas ça, cependant. Est-il possible de masquer la barre d'état mais gardez la hauteur de la barre de navigation em>? P> p>
3 Réponses :
La barre de navigation conserve sa hauteur, c'est que la barre de navigation et la barre d'état n'ont aucun séparateur entre eux (et ont le même arrière-plan), ils semblent donc être une chose, quand, en fait, ils sont deux. Donc, ce que vous voulez vraiment, c'est que la barre de navigation se développe pour occuper l'espace déjà occupé par la barre de navigation et la barre d'état.
Je l'ai fait comme ça avant (HaudreCon est une iboutlet à une contrainte de hauteur sur la barre de navigation). p>
Comment pouvez-vous cacher la barre d'état de cette mode? Je n'ai pu être que avec la méthode ci-dessus.
@Dougsmith, j'ai également ajouté une entrée au fichier info.plist "Afficher l'apparence de barre d'état basée sur le contrôleur" avec une valeur de non. Cela vous permet de le basculer avec le code ci-dessus.
@rdelmar, la barre de navigation rétrécira 44 px et vice versa en fonction de la valeur de la barre d'état. Vous pouvez ajouter ce morceau de code pour mieux vous sous-estimer comment cela fonctionne. Vous verrez l'image rétrécissant. [autoavigationcontroller.navigationController.navigationbar setbounds: CGRectureTmake (0, -50, 320,0)]; [autoavigationController.navigationbar SetbackImageImage: [UIImage Imagenamed: @ "NAVBAR"] Forbarposition: UIBARPOSITIONTOPATCHED BARMÉRICHES: UIBAREMETRICSDEFAULT]; < / code>
Néanmoins, si nous imprimerons la hauteur de la trame NAVBAR avant et après la barre d'état cachée, nous obtiendrons 44 px dans les deux cas mais que ce n'est pas le cas. Il est plus clair que si vous déplacez la barre NAV au milieu de l'écran.
Je n'ai pas eu la solution @RDelmar pour travailler pour moi avec le NslayoutConstraint Code> mais j'ai utilisé son idée pour proposer ce code très simple.
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
[UIView animateWithDuration:0.35
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:^{
self.navigationBar.top = 20;
}
completion:nil];
De mon expérience, vous ne pouvez pas définir la valeur de la structure comme vous êtes avec NavigationBar.top code>. Est-ce juste une illustration pour montrer ce que vous faites là-bas sans y compris beaucoup de code CGRREC?
J'ai trouvé une solution à ce problème au blogpost suivant: http://www.factorialcomplexity.com/blog/2014/08/05/fixed-height-navigation-bar-on-ios7.html Mais sa solution utilise la méthode Swizzling sur UinavigationBar, que je trouve peu attrayant.
J'ai compris que la barre d'utilisation de la sous-classement et fournisse une implémentation similaire à la solution Swizzled résout ce problème (Swift ici, mais les mêmes œuvres de l'OBJ- C): p> mettre à jour la classe de la barre de navigation dans votre storyboard ou utilisez initwithnavigationbarclass: Toolbarclass: code> Lorsque vous construisez votre contrôleur de navigation à utiliser la nouvelle classe. p> p>
Solution très propre et simple, merci beaucoup! Même l'animation de la barre d'état est toujours superbe.
Hey Alex et @SeaBass, j'utilise cette solution et cela fonctionne bien, mais le titre et les boutons de navigation ont des animations étranges. Ils sautent et animent lors de la montrage de la barre d'état. et le contraire quand je le cache. Une idée de comment réparer ça?
Github.com/molon/mmdrawercontroller/blob/master/ ... Le lien vous aidera. Vous avez juste besoin d'une atténuation de la paye à la catégorie [UINAVIGATIONBAR + FIXFRAMRAFTERHIDESTUTUSBART].