Middle+
¿Para qué sirven las propiedades de 'Prioridad de resistencia a la compresión'?
sobes.tech AI
Respuesta de la IA
Determinan qué tan reacia será una vista a reducirse en comparación con otras vistas cuando hay espacio libre insuficiente.
Propiedades Prioridad de Resistencia a la Compresión:
- Cada dimensión (Horizontal, Vertical) tiene su propia prioridad.
- Rango de valores: 1 (el más bajo) hasta 1000 (el más alto, UILayoutPriorityRequired).
- Una vista con una prioridad más alta resistirá más la compresión que una vista con una prioridad más baja.
- La prioridad 1000 garantiza que la vista no será comprimida por debajo de su tamaño de contenido intrínseco en ninguna circunstancia, si es posible.
Uso:
- Etiqueta con texto dinámico: Si tienes varias UILabel que pueden mostrar textos de diferentes longitudes, usar prioridades ayuda a determinar qué etiqueta se comprimirá primero si no caben en la pantalla.
- Botones: Para que el texto en un botón no se corte, puedes establecer una prioridad alta para su UILabel usando
Prioridad de Resistencia a la Compresión. - Diseños complejos: En diseños complejos de Auto Layout, las prioridades se usan para resolver ambigüedades cuando hay falta de espacio.
Ejemplo: Dos UILabel en una pila horizontal.
let label1 = UILabel()
label1.text = "Texto corto"
label1.backgroundColor = .red
let label2 = UILabel()
label2.text = "Texto muy muy muy largo"
label2.backgroundColor = .blue
let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Llena el espacio, pero puede comprimir el contenido
// Por defecto, las prioridades son iguales (usualmente 750).
// Ambos labels se comprimirán proporcionalmente.
// Establecemos una prioridad alta para label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// label2 mantiene su prioridad por defecto (750)
// Ahora, si falta espacio, label2 se comprimirá más,
// para que label1 conserve su tamaño.
Relación con Prioridad de Abarcamiento de Contenido (Content Hugging Priority):
Content Hugging Priority: Define qué tan reacia será una vista a aumentar más allá de su tamaño de contenido intrínseco cuando hay espacio libre adicional.- Alta
Content Hugging Priority= la vista "abraza" su contenido y no se expande. - Alta
Compression Resistance Priority= la vista resiste la compresión y no se reduce.
Estas dos propiedades trabajan juntas para ayudar a Auto Layout a distribuir correctamente el espacio entre las vistas.