Mise en page automatique: à la Verticale de centrage deux UIViews dans un superview, permet de redimensionner
J'ai deux UIButtons, l'une sur l'autre, dans un superview dont la hauteur peut être redimensionnée. Les deux boutons doivent avoir un espacement vertical entre eux, mais le haut et le bas de l'espace de redimensionner, de sorte que les deux boutons de rester centré dans le superview comme il redimensionne.
J'ai essayé de créer deux inférieur ou égal contraintes (avec la même priorité) sur l'espacement de la superview pour chaque bouton, ainsi qu'une constante de l'espacement vertical entre les boutons, comme indiqué ci-dessous:
(La raison pourquoi il est inférieur ou égal ici, c'est parce ce point de vue est défini à la hauteur de l'IB pour le 4" les écrans, mais peut être réduit de 3,5" écrans.) Cependant, ce n'est pas faire l'affaire, comme vous pouvez le voir sur la capture d'écran, tandis que l'application est en cours d'exécution:
C'est presque comme si vous voulez être en mesure de dire à mise en page automatique que les deux contraintes elles-mêmes devraient avoir les mêmes valeurs, même si elles sont "inférieur ou égal". Est-il possible de faire ce que je suis en train de faire, ou peut-être une meilleure façon?
- Êtes-vous à l'aide des story-boards ou de l'Interface Builder?
- Storyboards au sein de l'IB.
Vous devez vous connecter pour publier un commentaire.
C'est tellement trivial à faire de l'IB.
1) ⌃ glisser bouton1 haut. sélectionnez "centre horizontalement dans un conteneur".
2) ⌃ glisser bouton1 gauche. sélectionnez "centrer verticalement dans un récipient".
3) faire de même avec bouton2.
4) maintenant, la seule chose qui reste à faire est de taille, les boutons, car c'est à quoi il ressemble.
C'est aussi très trivial.
5) ⌃ glisser bouton1 la gauche. sélectionnez "espace du conteneur de la marge".
6) ⌃ glisser bouton1 la droite. sélectionnez "espace de remplissage de récipient de la marge".
7) faire la même chose avec les bouton2.
Le produit fini ressemble à ceci (NB je n'ai pas très bien les centrer, mais j'ai pu avoir assez facilement):
La façon la plus simple à la verticale du centre est d'ajouter un
NSLayoutAttributeCenterY
de la contrainte, de préférence, de l'élément qui est à proximité du centre de la vue. Et si tous les points de vue ont un espacement vertical de contraintes, puis ils vont tous être centrée. Pas besoin de coucher avec le point de vue de la hiérarchie ou ajouter entretoise vues.Si vous avez besoin d'ajuster le positionnement, l'ensemble de la constante. Par exemple:
constant:-30
va le déplacer jusqu'à 30 points.Vous pouvez aussi ancrer des éléments basés sur des logiques différentes zones de la vue. Par exemple, si vous souhaitez ancrer votre premier bouton à 25% de la hauteur de vue, vous pouvez régler le multiplicateur de
0.5
.D'accord avec rdelmar. Voici une autre option si vous souhaitez conserver la vue de la hiérarchie.
Vous êtes actuellement à l'espacement des boutons situés en haut et en bas à l'aide de contraintes. Au lieu de cela, créez deux vide
UIView
s, ils seront utilisés comme des entretoises. Ils doivent être positionnés l'un en haut et un en bas de vos boutons. À l'aide de contraintes de mise en page automatique, assurez-vous que la hauteur de ces deux entretoise de vues est toujours égale. Assurez-vous qu'ils sont épinglés en haut et en bas des boutons et le haut et le bas de la superview, respectivement.Dans VFL:
V:|-[spacer1(==spacer2)]-[button1]-(20)-[button2]-[spacer2(==spacer1)]-|
.Vous pouvez avoir à faire dans le code, je ne suis pas sûr si l'IB peuvent le faire.
Une façon d'y parvenir est de joindre les deux boutons dans un autre UIView, et le centre de ce point de vue dans le contrôleur de vue. Donner des boutons à une distance fixe en haut et en bas de ce point de vue, et d'une distance fixe entre eux, ou avec une hauteur fixe pour la vue.