Exemple de topLayoutGuide et bottomLayoutGuide UIViewController propriétés
Je vais apprécier si quelqu'un peut montrer comment utiliser le topLayoutGuide et bottomLayoutGuide propriétés de UITableViewController introduites dans iOS 7. Merci.
La topLayoutGuide et bottomLayoutGuide propriétés sont héritées de UIViewController et met en œuvre la UILayoutSupport protocole. Ils sont conçus pour être utilisés avec AutoLayout, mais peut également être utilisé directement sans l'utilisation de AutoLayout.
Dans le cas de topLayoutGuide, la propriété indique la plus grande étendue verticale pour le contenu que vous ne souhaitez pas voir apparaître derrière un translucide ou transparent UIKit bar (comme un statut ou une barre de navigation). Donc, si votre vue-contrôleur a été poussé sur un UINavigationController pile, topLayoutGuide vous indiquera le nombre de points à partir du haut de l'écran la barre d'état et la barre de navigation de couverture. Vous pouvez utiliser cette valeur de défilement du contenu dans un UIScrollView juste en dessous de la barre de navigation ou d'assurer le contenu de votre point de vue n'est pas couvert par la UINavigationBar.
Gardez à l'esprit que la valeur de topLayoutGuide dépend de la vue-contrôleur et si oui ou non c'est contenue dans une autre vue-contrôleur. À partir d'Apple UIViewController documentation:
L'objet qui limite la valeur de cette propriété dépend
si oui ou non la vue-contrôleur est un enfant d'un conteneur en vue
contrôleur (par exemple, un système de navigation ou la barre d'onglet contrôleur), comme suit:
• Une vue contrôleur pas à l'intérieur d'un conteneur view controller limite
cette propriété pour indiquer le bas de la barre d'état, si elle est visible, ou
d'autre pour indiquer le bord supérieur de l'affichage du contrôleur de vue.
• Une vue de contrôleur au sein d'un conteneur view controller ne définissez pas cette
la valeur de la propriété. Au lieu de cela, le récipient vue contrôleur de limite
la valeur à indiquer:
Le bas de la barre de navigation, si un
la barre de navigation est visible
Le bas de la barre d'état, si seulement
barre d'état est visible
Le bord supérieur de l'affichage du contrôleur de vue, si
ni une barre d'état, ni de la barre de navigation est visible
Voici un morceau de code que j'ai utiliser pour déplacer un UITextField en réponse à la projection du clavier. - Je déplacer la zone de texte juste en dessous de la barre de navigation.
À l'aide de bottomLayoutGuide est exactement comme l'utilisation de topLayoutGuide, à l'exception de la bottomLayoutGuide se réfère à la plus faible étendue verticale de contenu.
Je suis à la configuration de mise en page automatique dans un UIViewController de viewDidLoad. Quand je lance CGFloat longueur = auto.topLayoutGuide.longueur; j'obtiens une valeur de 0. Où dois-je mettre en œuvre ce message? topLayoutGuide est généré dynamiquement la valeur. Il n'a de sens que pour l'utiliser après le point de vue du contrôleur de point de vue a été ajouté à la vue de la hiérarchie. À l'aide de viewDidLoad va vous amener à lire topLayoutGuide avant le point de vue a été ajouté à la vue de la hiérarchie et, par conséquent, de retour de 0. Si vous utilisez topLayoutGuide à l'intérieur d'une sous-classe de UIViewController, le premier endroit que vous pouvez utiliser fiable, il est viewDidLayoutSubviews. Si vous l'utilisez à l'intérieur d'une sous-classe de UIView, vous pouvez utiliser layoutSubviews. Vous pouvez lire tout ça ici: goo.gl/Tn6moX Je tiens aussi à souligner que topLayoutGuide sera de retour 0, dans certains cas, comme expliqué dans la documentation. Il est donc important que vous ne le lisez pas sa valeur trop tôt.
La
topLayoutGuide
etbottomLayoutGuide
propriétés sont héritées de UIViewController et met en œuvre la UILayoutSupport protocole. Ils sont conçus pour être utilisés avecAutoLayout
, mais peut également être utilisé directement sans l'utilisation deAutoLayout
.Dans le cas de
topLayoutGuide
, la propriété indique la plus grande étendue verticale pour le contenu que vous ne souhaitez pas voir apparaître derrière un translucide ou transparent UIKit bar (comme un statut ou une barre de navigation). Donc, si votre vue-contrôleur a été poussé sur unUINavigationController
pile,topLayoutGuide
vous indiquera le nombre de points à partir du haut de l'écran la barre d'état et la barre de navigation de couverture. Vous pouvez utiliser cette valeur de défilement du contenu dans unUIScrollView
juste en dessous de la barre de navigation ou d'assurer le contenu de votre point de vue n'est pas couvert par laUINavigationBar
.Gardez à l'esprit que la valeur de
topLayoutGuide
dépend de la vue-contrôleur et si oui ou non c'est contenue dans une autre vue-contrôleur. À partir d'AppleUIViewController
documentation:Voici un morceau de code que j'ai utiliser pour déplacer un
UITextField
en réponse à la projection du clavier. - Je déplacer la zone de texte juste en dessous de la barre de navigation.À l'aide de
bottomLayoutGuide
est exactement comme l'utilisation detopLayoutGuide
, à l'exception de labottomLayoutGuide
se réfère à la plus faible étendue verticale de contenu.topLayoutGuide est généré dynamiquement la valeur. Il n'a de sens que pour l'utiliser après le point de vue du contrôleur de point de vue a été ajouté à la vue de la hiérarchie. À l'aide de viewDidLoad va vous amener à lire topLayoutGuide avant le point de vue a été ajouté à la vue de la hiérarchie et, par conséquent, de retour de 0. Si vous utilisez topLayoutGuide à l'intérieur d'une sous-classe de UIViewController, le premier endroit que vous pouvez utiliser fiable, il est viewDidLayoutSubviews. Si vous l'utilisez à l'intérieur d'une sous-classe de UIView, vous pouvez utiliser layoutSubviews. Vous pouvez lire tout ça ici: goo.gl/Tn6moX
Je tiens aussi à souligner que topLayoutGuide sera de retour 0, dans certains cas, comme expliqué dans la documentation. Il est donc important que vous ne le lisez pas sa valeur trop tôt.
OriginalL'auteur Stephen Melvin