Répondre

2

Vous pouvez accomplir ceci en utilisant AutoLayout.

Assurez-vous que chaque vue enfant a des contraintes définissant sa taille et sa position. Ensuite, définissez les priorités d'étreinte et de résistance à la compression du contenu vertical de la vue parent sur Obligatoire. Cela définira la hauteur du parent en fonction de la hauteur et du positionnement de ses vues enfant. Notez qu'en fonction de ce que les vues enfants sont, vous pouvez également modifier leurs priorités d'étreinte verticale et de résistance à la compression. Par exemple, un UILabel avec numberOfLines défini sur 0 peut croître automatiquement en fonction de son contenu, vous souhaiterez donc qu'il épouse son contenu verticalement et résiste à la compression verticale afin de redimensionner la vue parente.

Cette image montre la vue parente (blanc) avec ses priorités de résistance à la compression verticale et à la compression définies dans le panneau de l'inspecteur. Notez que la vue parent a des contraintes définies pour sa largeur, sa position x et sa position y, mais pas sa hauteur. Il est capable de déduire sa hauteur en fonction de la hauteur et de la position des vues enfant (voir l'image suivante).

enter image description here

Cette image montre les contraintes de chaque vue des enfants. Notez que les priorités d'étreinte verticale et de résistance à la compression de ces vues étaient et non modifiées. Chacune de ces vues a des contraintes pour la position x et la position y, mais vous remarquerez que toutes n'ont pas de contraintes pour la largeur et la hauteur. Des vues comme l'étiquette et le commutateur sont capables de déduire automatiquement leurs contraintes de taille en fonction de leur contenu. Si vous ne définissez pas de contraintes de position verticale sur chacune des vues enfant, la mise en forme automatique ne connaîtra pas l'espace dont chacune d'entre elles a besoin, elle ne saura donc pas quelle doit être la vue parent.

enter image description here

+0

Merci de m'expliquer.Je ne peux pas comprendre, pouvez-vous expliquer comment faire cela avec une image ou une série d'instructions pour le scénario ci-dessous .. J'ai une vue (Parent) et il y a un interrupteur et deux étiquettes après un autre. –

+0

Je vais vous upvote une fois que j'ai eu suffisamment de points –

+0

si vous pouviez m'expliquer plus sur la résistance et les caresses qui serait bien aussi –

1

1- Ajouter récipient et vous visualisez ajouter des contraintes. Ne réglez pas la hauteur ni l'espacement du fond ou réglez-le avec moins de priorité (exemple 999).

2- Ajoutez des éléments/objets à votre View Container et ajoutez des contraintes. Assurez-vous d'ajouter toutes les contraintes requises et ajoutez l'espacement inférieur à l'élément inférieur à l'intérieur.

Cela va définir la hauteur de la vue conteneur.

enter image description here

enter image description here

PD: Oublier Content Hugging/Compression and Priority. Ils sont pratiques mais pas utiles ici. Ils ont juste mis une résistance pour devenir plus grand ou plus petit.