2017-09-19 2 views
-1

Existe-t-il un moyen facile de centrer les contrôles dans une vue dans iOS comme l'utilisation d'android: gravity = "center_horizontal" dans android? Je pourrais calculer la position pour chaque contrôle avant de l'ajouter et recalculer quand l'écran est tourné, mais je me demande s'il y a une meilleure solution pour cela.Gravité dans iOS comme dans android

+1

Utilisez un 'UIStackView'. – dasdom

+1

Je n'ai pas développé pour Android auparavant, donc je ne peux pas faire un jugement définitif moi-même, mais simplement ajouter une contrainte de centrage ou deux avec AutoLayout faire l'affaire? –

+0

UIStackView devrait être l'outil par défaut pour la disposition des vues. Il traite ensuite de toute rotation ou taille d'écran pendu pour vous. – Fogmeister

Répondre

0

S'il vous plaît prêter attention, layout_gravity est différent de la gravité dans Android.

layout_gravity est pour l'alignement en vue de récipient et gravité pour l'alignement du contenu en soi. Après avoir lu votre question, je pense que vous voulez dire layout_gravity et non gravity.

Bon, parlons de UIStackView. Comme le dit la documentation, il s'agit simplement d'une vue conteneur qui peut contrôler la distribution, l'aligment, l'espacement, xxx sur ses sous-vues, et qui est créée avec autoLayout, cela signifie que vous n'avez pas besoin de gérer ces contraintes les sous-vues.

enter image description here

Comme vous le voyez, l'alignement des stackView appliquera à tous les contrôles sur ce pas seul.

Pour obtenir l'effet comme layout_gravity, vous devez gérer les contraintes manuellement.

enter image description here

et les contraintes qui pèsent sur le bouton central.

enter image description here

+0

Je connais la différence entre layout_gravity et gravity, et j'ai besoin de quelque chose comme la gravité. Si j'applique ceci sur une vue, je veux que tous les contrôles de cette vue soient centrés (ceci est la gravité), et non la vue centrée dans son parent (comme layout_gravity). –

+0

ok, j'ai mal compris, donc UIStackView peut résoudre votre problème, vous avez juste besoin de mettre UIStackViewAlignment au centre. –

+0

Lorsque l'Axe de la vue de la pile est Horizontal, vous ne pouvez définir que le haut, le bas, le centre, la même raison, si in vivo, seuls les éléments Leading, Trailing peuvent prendre effet. –