11
votes

Dans iOS 7 Si je cache la barre d'état avec la méthode `préferfersstatusbarHenden`, la barre de navigation rétrécit / perd la hauteur. Puis-je arrêter ce comportement?

sur iOS 7, si j'utilise la méthode préfersstatusbarHenden et renvoie une variable d'instance qui peut être modifiée: xxx

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 ?


1 commentaires

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].


3 Réponses :


2
votes

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). xxx


4 commentaires

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.



0
votes

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];


1 commentaires

De mon expérience, vous ne pouvez pas définir la valeur de la structure comme vous êtes avec NavigationBar.top . Est-ce juste une illustration pour montrer ce que vous faites là-bas sans y compris beaucoup de code CGRREC?



8
votes

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.

mise à jour:

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): xxx

mettre à jour la classe de la barre de navigation dans votre storyboard ou utilisez initwithnavigationbarclass: Toolbarclass: Lorsque vous construisez votre contrôleur de navigation à utiliser la nouvelle classe.


2 commentaires

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?