que framework ios cocoa-touch uiview autolayout

ios - framework - ¿Cuál es la resistencia a la compresión de contenido y el abrazo de contenido de una UIView?



uikit ios (1)

¿Cuál es la resistencia a la compresión de contenido y el abrazo de contenido de una UIView? ¿Cómo se relacionan estas con el tamaño del contenido intrínseco de una vista?


Tomado del excelente artículo de Advanced Auto Layout Toolbox de objc.io :

Tamaño del contenido intrínseco

El tamaño de contenido intrínseco es el tamaño que una vista prefiere tener para un contenido específico que muestra. Por ejemplo, UILabel tiene una altura preferida basada en la fuente y un ancho preferido según la fuente y el texto que muestra. Un UIProgressView solo tiene una altura preferida en función de su obra de arte, pero no tiene un ancho preferido. Un UIView simple no tiene un ancho preferido ni una altura preferida.

Resistencia a la compresión y abrazo de contenido

Cada vista tiene prioridades de resistencia a la compresión de contenido y prioridades de abrazos de contenido asignadas para ambas dimensiones. Estas propiedades solo tienen efecto para las vistas que definen un tamaño de contenido intrínseco, de lo contrario no se define el tamaño del contenido que podría resistir la compresión o ser abrazado.

Detrás de escena, el tamaño de contenido intrínseco y estos valores de prioridad se traducen en restricciones. Para una etiqueta con un tamaño de contenido intrínseco de {100, 30}, prioridad de resistencia a la compresión horizontal / vertical de 750 y prioridad de abrazamiento de contenido horizontal / vertical de 250, se generarán cuatro restricciones:

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

Si no está familiarizado con el lenguaje de formato visual para las restricciones utilizadas anteriormente, puede leer sobre esto en la documentación de Apple. Tener en cuenta que estas restricciones adicionales se generan implícitamente ayuda a comprender el comportamiento de Auto Layout y a tener un mejor sentido de sus mensajes de error.

Aquí hay otra pregunta de que aborda la diferencia entre la resistencia a la compresión del contenido y el abrazo de contenido: https://.com/questions/15850417/cocoa-autolayout-content-hugging-vs-content-compression-resistance-priority