Comment configurer l'autolayout dans Interface Builder pour organiser les vues verticalement, comme indiqué sur l'image:
Top view
épinglé à l'écran supérieur Edge, Bottom view
épinglé à l'écran inférieur Edge. My view
doit être centré entre les vues du haut et du bas (donc distance par rapport à Top view
égale la distance par rapport à Bottom view
Pour ce faire, vous devez avoir 2 vues "d'espacement" invisibles entre vous.
Vous ne pouvez pas créer des espaces de même hauteur. Mais vous utilisez les vues "spacer" et les placez entre vos vues (avec 0 espace par rapport aux vues environnantes).
Ensuite, vous donnez à ces vues une hauteur égale et elles pousseront vos vues pour centrer le My View
avec un espace égal au Bottom View
et au Top View
.
c'est à dire comme ça ...
V:|[Top View][spacer1][My View][spacer2(==spacer1)][Bottom View]|
EDITER - Une autre façon
Je viens de penser à une autre façon de faire cela. Vous pourriez avoir un conteneur invisible UIView
compris entre Top View
et Bottom View
sans espace.
Ensuite, placez My View
dans cette vue invisible et centrez-la verticalement.
(5 ans plus tard) j'ai trouvé la solution la plus canonique:
UILayoutGuide
est spécialement introduit pour résoudre ce type de tâches (depuis iOS 9).
Utilisez des guides de présentation pour remplacer les vues factices que vous avez éventuellement créées pour représenter des espaces inter-vues ou une encapsulation dans votre interface utilisateur} _ - Documents de référence
Cela fonctionne très bien dans le code, mais malheureusement, Interface Builder ne prend pas en charge les guides de présentation personnalisés.
Cette vidéo donne un aperçu étonnant de la mise en page automatique et des contraintes du constructeur d'interface: https://www.youtube.com/watch?v=1j-Frd5snYc