Middle+
Na čo sú vlastnosti 'Priorita odolnosti voči stlačeniu'?
sobes.tech AI
Odpoveď od AI
Určujú, ako veľmi bude zložité zmenšiť zobrazenie v porovnaní s inými zobrazeniami pri nedostatku voľného miesta.
Vlastnosti Compression Resistance Priority:
- Každá dimenzia (Horizontálna, Vertikálna) má svoj prioritu.
- Rozsah hodnôt: 1 (najnižšia) do 1000 (najvyššia, UILayoutPriorityRequired).
- Zobrazenie s vyššou prioritou sa bude "brániť" zmenšeniu silnejšie ako zobrazenie s nižšou prioritou.
- Priorita 1000 zaručuje, že zobrazenie nebude zmenšené pod jeho intrinsic content size za žiadnych okolností, ak je to možné.
Použitie:
- Label s dynamickým textom: Ak máte viac UILabelov, ktoré môžu zobrazovať text rôznej dĺžky, použitie priorít pomáha určiť, ktorý label sa bude najskôr zmenšovať, ak sa nezmestia na obrazovku.
- Tlačidlá: Aby text na tlačidle nebol orezaný, môžete nastaviť vysokú prioritu
Compression Resistance Prioritypre jeho UILabel. - Zložité rozloženia: V zložitých Auto Layout rozloženiach sa priority používajú na riešenie nejasností pri nedostatku priestoru.
Príklad: Dva UILabel v horizontálnom stohu.
let label1 = UILabel()
label1.text = "Krátky text"
label1.backgroundColor = .red
let label2 = UILabel()
label2.text = "Veľmi, veľmi, veľmi dlhý text"
label2.backgroundColor = .blue
let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Vyplní priestor, ale môže stláčať obsah
// Predvolene majú rovnaké priority (zvyčajne 750).
// Oba labely sa budú proporcionálne zmenšovať.
// Nastavujeme vysokú prioritu pre label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// label2 zostáva s prioritou 750
// Teraz, pri nedostatku priestoru, sa label2 bude zmenšovať silnejšie,
// aby si label1 zachoval svoju veľkosť.
Väzba s Content Hugging Priority:
Content Hugging Priority: Určuje, ako veľmi bude zobrazenie neochotné zväčšiť svoju veľkosť od svojho intrinsic content size pri prebytku voľného priestoru.- Vysoká
Content Hugging Priority= zobrazenie "objíma" svoj obsah a nerozširuje sa. - Vysoká
Compression Resistance Priority= zobrazenie "odmieta" stláčanie a nezmenšuje sa.
Tieto dve vlastnosti spolupracujú, aby Auto Layout správne rozdelil priestor medzi zobrazeniami.