Comment En Appeler de la barre de statut impacts UIViewController de vue de la taille?
J'essaie de comprendre comment la view
associée à un UITabBarController
, UINavigationController
ou UIViewController
réagit lors de l'appel de la barre de statut est activé.
Mon problème, c'est qu'ils semblent se comporter différemment et cela me cause des effets secondaires.
J'ai fait un projet qui change la vue de la racine de contrôleur de la fenêtre pour les 3 types ci-dessus et j'ai un dump de la description
de la view
pour obtenir le cadre de coordonnées.
UIViewController
inCall statut HORS:
UIView: 0x4e2a1f0; cadre = (0 20; 320 460); autoresize = W+H; ....
SUR
UIView: 0x4e2a1f0; cadre = (0 40; 320 440); autoresize = W+H; ...
Ce que je comprends : quand l'appel barre d'état s'affiche, la hauteur de la vue de la UIViewController se rétrécit et perd 20, et son y coord se déplace de 20 à 40.
C'est parfait ! Je m'attends à la même chose lors du remplacement d'un classique UIViewController
avec un UITabBarController
ou un UINavigationController
mais ce n'est pas le cas !
-
UINavigationController
InCall barre d'état HORS
UILayoutContainerView: 0x4b35ab0; cadre = (0 0; 320 480); autoresize = W+H; ..
SUR
UILayoutContainerView: 0x4e1b060; cadre = (0 0; 320 480); autoresize = W+H; ..
Dans ce cas, le point de vue traitées par le UINavigationController ne dispose pas de son cadre propriétés modifiées lors de l'appel de la barre de statut est activé?! (pourquoi ? 🙁 )
UITabBarController
HORS
UIView: 0x4b2f6a0; cadre = (0 20; 320 460); autoresize = W+H; ...
SUR
UIView: 0x4b2f6a0; cadre = (0 20; 320 460); autoresize = W+H; ...
Même que dans le UINavigationController
: le view
de la UITabBarController
ne semble pas être touché lorsque l'incall barre d'état est activé.
Quelqu'un peut-il m'expliquer comment ce redimensionnement fonctionne lors de l'affichage de la incall barre d'état s'affiche ?
Mon objectif final est d'afficher une UIView
qui est montré ci-DESSUS l'ensemble de la UITabBarController
et qui se redimensionne correctement lorsque le statut de l'appel est affichée. Cependant, je ne sais vraiment pas où mettre ce point de vue dans le point de vue de la hiérarchie : si je l'ajouter en tant qu'enfant de la UITabBarController de vue, que celui-ci ne réagit pas à la incall affichage de l'état, mine de ne pas réagir ainsi 🙁
- +1 pour les soins à ce sujet.
Vous devez vous connecter pour publier un commentaire.
La hauteur de la vue lors de l'appel de la barre d'état est activée dépend de la façon dont il est ancré.
Jouer avec les autoResizingMask de la UIView pour contrôler si la vue doit se déplacer vers le bas ou redimensionner lors de l'appel de la barre de statut affiche.
Ces deux propriétés,
va vous aider. La première pousse de la vue vers le bas, la seconde on change la taille.
Votre UIViewController exemple a [
wantsFullScreenLayout
] est réglé sur NON, ce qui provoque l'affichage automatique de la taille afin de ne pas passer sous la barre d'état.UINavigationController et UITabBarController, d'autre part, par défaut
wantsFullScreenLayout
OUI. De sorte que leurs points de vue de prendre la totalité de la fenêtre, et ils ont la taille et la position de leurs sous-vues eux-mêmes pour traiter correctement la barre d'état. Si vous définissez explicitement la propriété sur ces contrôleurs ou PAS, vous devriez obtenir le comportement que vous désirez (mais alors de perdre la capacité de gérer correctement enfant contrôleurs de jeuwantsFullScreenLayout
OUI, si vous vous souciez de cela).Dans votre UITabBarController exemple, BTW, il semble que vous n'êtes pas l'impression de l'information pour l'affichage de la barre d'onglet contrôleur, ici, qui est un UILayoutContainerView, pas une plaine UIView.
Idéalement, vous devriez oublier combien le montant de la vue est redimensionnée et jouer avec d'un redimensionnement automatique de masque.