Quel est le but du autoresizingMask D'UIView?

Après avoir lu à propos de UIView ' s autoresizingMask sur SO et developer.apple.com Je ne sais toujours pas quel est le but. Quelle est la situation où la définition de cette propriété est nécessaire?

21
demandé sur SundayMonday 2011-09-07 20:36:41

2 réponses

Oui, il est souvent nécessaire de le définir si vous ne voulez pas redimensionner les vues manuellement. Notez qu'il est surtout utile pour les sous-vues (c'est-à-dire les vues qui ne prennent pas tout l'écran) plutôt que la vue principale de votre application.

Les vues peuvent généralement nécessiter un redimensionnement si:

  • le dispositif est tourné
  • une vue supplémentaire (par exemple, une annonce) est ajoutée à la vue, de sorte que les sous-vues existantes ont moins d'espace disponible.

Par exemple, supposons que vous ayez une vue avec deux boutons sur celui-ci, un dans le coin supérieur gauche, un autre dans le coin supérieur droit. Pour que les boutons s'élargissent lorsque la vue passe du portrait au paysage, vous devez définir FlexibleLeftMargin sur le bouton droit, FlexibleRightMargin sur le bouton gauche.

Edit: autoresizingMask est également la première chose à regarder si vous voyez des trous ou des chevauchements étranges lorsque le périphérique est tourné ou qu'une nouvelle sous-vue est ajoutée. Très souvent, le bon réglage de ces masques pour les sous-vues peut vous obtenir une belle regarder la vue dans les deux orientations sans avoir à disposer de sous-vues manuellement - mais généralement il faut expérimenter.

Edit2: (puisque cela rassemble encore des upvotes) les masques Autoresizing sont maintenant principalement remplacés par "mise en page automatique", ce qui permet des contraintes beaucoup plus flexibles sur les tailles et les positions des vues. Cela étant dit, translatesAutoresizingMaskIntoConstraints est encore parfois utile pour les vues ajoutées dynamiquement.

22
répondu SVD 2016-04-29 17:33:11

Le but est que UIView décale et redimensionne correctement quand il change de superview en raison du redimensionnement, du changement d'orientation, de l'affichage des contrôles d'édition dans les cellules tableview, etc.

4
répondu Kyr Dunenkoff 2011-09-07 16:42:38