Middle+
A cosa servono le proprietà di 'Priorità di resistenza alla compressione'?
sobes.tech AI
Risposta dell'AI
Determinano quanto una vista sarà riluttante a ridursi rispetto ad altre viste in caso di spazio libero insufficiente.
Proprietà Priorità di Resistenza alla Compressione:
- Ogni dimensione (Orizzontale, Verticale) ha la propria priorità.
- Intervallo di valori: 1 (più basso) fino a 1000 (più alto, UILayoutPriorityRequired).
- Una vista con priorità più alta resisterà più alla compressione rispetto a una con priorità più bassa.
- La priorità 1000 garantisce che la vista non venga compressa al di sotto delle sue dimensioni di contenuto intrinseco in nessuna circostanza, se possibile.
Utilizzo:
- Etichette con testo dinamico: Se hai più UILabel che possono mostrare testi di lunghezze diverse, usare le priorità aiuta a determinare quale etichetta verrà compressa per prima se non ci sta nello schermo.
- Pulsanti: Per evitare che il testo su un pulsante venga tagliato, puoi impostare una priorità alta per il suo UILabel usando
Priorità di Resistenza alla Compressione. - Layout complessi: Nei layout complessi di Auto Layout, le priorità vengono usate per risolvere ambiguità in caso di mancanza di spazio.
Esempio: Due UILabel in uno stack orizzontale.
let label1 = UILabel()
label1.text = "Testo breve"
label1.backgroundColor = .red
let label2 = UILabel()
label2.text = "Testo molto molto molto lungo"
label2.backgroundColor = .blue
let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Riempe lo spazio, ma può comprimere il contenuto
// Per impostazione predefinita, le priorità sono uguali (di solito 750).
// Entrambe le etichette verranno compresse proporzionalmente.
// Imposta alta priorità per label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// label2 mantiene la sua priorità di default (750)
// Ora, in caso di spazio insufficiente, label2 verrà compressa di più,
// affinché label1 mantenga la sua dimensione.
Relazione con Priorità di Abbraccio del Contenuto (Content Hugging Priority):
Content Hugging Priority: Determina quanto una vista sarà riluttante ad aumentare oltre la sua dimensione di contenuto intrinseco quando c'è spazio libero in eccesso.- Alta
Content Hugging Priority= la vista "abbraccia" il suo contenuto e non si espande. - Alta
Compression Resistance Priority= la vista resiste alla compressione e non si riduce.
Queste due proprietà lavorano insieme per aiutare Auto Layout a distribuire correttamente lo spazio tra le viste.