web-dev-qa-db-fra.com

Quelle est la résistance à la compression du contenu et l’embrassement du contenu d’un UIView?

Quelle est la résistance à la compression de contenu et le contenu de UIView? Quel est leur lien avec la taille de contenu intrinsèque d'une vue?

60
smileyborg

Tiré de l'excellent objc.ioarticle de Advanced Auto Layout Toolbox :

Taille du contenu intrinsèque

La taille de contenu intrinsèque est la taille qu'une vue préfère avoir pour un contenu spécifique qu'elle affiche. Par exemple, UILabel a une hauteur préférée basée sur la police et une largeur préférée basée sur la police et le texte affiché. UIProgressView a uniquement une hauteur préférée basée sur son illustration, mais pas de largeur préférée. Un UIView simple n'a ni une largeur ni une hauteur préférées.

Résistance à la compression et étreinte du contenu

Chaque vue possède des priorités de résistance à la compression de contenu et des priorités de filtrage de contenu affectées aux deux dimensions. Ces propriétés ne prennent effet que pour les vues qui définissent une taille de contenu intrinsèque, sinon aucune taille de contenu définie ne pourrait résister à la compression ou être embrassée.

En coulisse, la taille intrinsèque du contenu et ces valeurs de priorité sont traduites en contraintes. Pour une étiquette ayant une taille de contenu intrinsèque de {100, 30}, une priorité de résistance à la compression horizontale/verticale de 750 et une priorité de recouvrement de contenu horizontal/vertical de 250, quatre contraintes seront générées:

H:[label(<=100@250)] 
H:[label(>=100@750)]
V:[label(<=30@250)]
V:[label(>=30@750)]

Si vous ne connaissez pas le langage de formatage visuel pour les contraintes utilisées ci-dessus, vous en saurez plus dans la documentation d’Apple. Garder à l’esprit que ces contraintes supplémentaires sont générées implicitement aident à comprendre le comportement de Auto Layout et à mieux comprendre ses messages d’erreur.

Voici une autre question de StackOverflow qui aborde la différence entre la résistance à la compression de contenu et l’embrassement de contenu: Cocoa Autolayout: étirement de contenu vs priorité de résistance de compression de conten

95
smileyborg