Sobes.tech
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 Priority pre 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.