Middle+
À quoi servent les propriétés de 'Priorité de résistance à la compression' ?
sobes.tech IA
Réponse de l'IA
Déterminent à quel point une vue sera réticente à se réduire par rapport à d'autres vues en cas d'espace libre insuffisant.
Propriétés Priorité de Résistance à la Compression :
- Chaque dimension (Horizontal, Vertical) a sa propre priorité.
- Plage de valeurs : 1 (la plus basse) à 1000 (la plus haute, UILayoutPriorityRequired).
- Une vue avec une priorité plus élevée résistera davantage à la compression qu'une vue avec une priorité plus basse.
- La priorité 1000 garantit que la vue ne sera pas comprimée en dessous de sa taille de contenu intrinsèque dans aucune circonstance, si possible.
Utilisation :
- Étiquette avec texte dynamique : Si vous avez plusieurs UILabel pouvant afficher des textes de longueurs différentes, l'utilisation des priorités aide à déterminer quelle étiquette sera comprimée en premier si elles ne tiennent pas à l'écran.
- Boutons : Pour que le texte sur un bouton ne soit pas coupé, vous pouvez définir une priorité élevée pour son UILabel en utilisant
Priorité de Résistance à la Compression. - Mises en page complexes : Dans des mises en page Auto Layout complexes, les priorités sont utilisées pour résoudre les ambiguïtés en cas de manque d'espace.
Exemple : Deux UILabel dans une pile horizontale.
let label1 = UILabel()
label1.text = "Texte court"
label1.backgroundColor = .red
let label2 = UILabel()
label2.text = "Texte très très très long"
label2.backgroundColor = .blue
let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Remplit l'espace, mais peut compresser le contenu
// Par défaut, les priorités sont identiques (habituellement 750).
// Les deux labels seront compressés proportionnellement.
// On définit une priorité élevée pour label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// label2 conserve sa priorité par défaut (750)
// Maintenant, en cas de manque d'espace, label2 sera compressé davantage,
// pour que label1 conserve sa taille.
Lien avec Priorité d'Embrassade du Contenu (Content Hugging Priority) :
Content Hugging Priority: Détermine à quel point une vue sera réticente à augmenter au-delà de sa taille de contenu intrinsèque lorsqu'il y a de l'espace libre supplémentaire.- Haute
Content Hugging Priority= la vue "embrasse" son contenu et ne s'étend pas. - Haute
Compression Resistance Priority= la vue résiste à la compression et ne se réduit pas.
Ces deux propriétés travaillent ensemble pour aider Auto Layout à répartir correctement l'espace entre les vues.