Middle+
Para que servem as propriedades de 'Prioridade de resistência à compressão'?
sobes.tech IA
Resposta da IA
Determinando até que ponto uma vista será relutante em diminuir-se em comparação com outras vistas quando há espaço livre insuficiente.
Propriedades Prioridade de Resistência à Compressão:
- Cada dimensão (Horizontal, Vertical) tem sua própria prioridade.
- Faixa de valores: 1 (mais baixo) até 1000 (mais alto, UILayoutPriorityRequired).
- Uma vista com prioridade mais alta resistirá mais à compressão do que uma vista com prioridade mais baixa.
- A prioridade 1000 garante que a vista não será comprimida abaixo do seu tamanho de conteúdo intrínseco em nenhuma circunstância, se possível.
Uso:
- Etiqueta com texto dinâmico: Se tiver várias UILabels que podem exibir textos de diferentes comprimentos, usar prioridades ajuda a determinar qual será comprimida primeiro se não couberem na tela.
- Botões: Para que o texto num botão não seja cortado, pode definir uma prioridade alta para o seu UILabel usando
Prioridade de Resistência à Compressão. - Layouts complexos: Em layouts Auto Layout complexos, as prioridades são usadas para resolver ambiguidades quando há falta de espaço.
Exemplo: Dois UILabels numa pilha horizontal.
let label1 = UILabel()
label1.text = "Texto curto"
label1.backgroundColor = .red
let label2 = UILabel()
label2.text = "Texto muito muito muito longo"
label2.backgroundColor = .blue
let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Preenche o espaço, mas pode comprimir o conteúdo
// Por padrão, as prioridades são iguais (normalmente 750).
// Ambos os labels serão comprimidos proporcionalmente.
// Definimos uma prioridade alta para label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// label2 mantém a sua prioridade padrão (750)
// Agora, na falta de espaço, label2 será comprimido mais,
// para que label1 mantenha o seu tamanho.
Relação com Prioridade de Abraço do Conteúdo (Content Hugging Priority):
Content Hugging Priority: Define até que ponto uma vista será relutante em aumentar além do seu tamanho de conteúdo intrínseco quando há espaço livre adicional.- Alta
Content Hugging Priority= a vista "abraça" o seu conteúdo e não se expande. - Alta
Compression Resistance Priority= a vista resiste à compressão e não se reduz.
Estas duas propriedades trabalham juntas para ajudar o Auto Layout a distribuir corretamente o espaço entre as vistas.