Sobes.tech
Middle+

Kokia yra 'Suspaudimo atsparumo prioritetų' savybių paskirtis?

sobes.tech AI

Atsakymas iš AI

Nustato, kaip labai sunku sumažinti vaizdą, palyginti su kitais vaizdais, esant nepakankamai laisvos vietos:

Compression Resistance Priority savybės:

  • Kiekviena dimensija (Horizontal, Vertical) turi savo prioritetą.
  • Reikšmių diapazonas: nuo 1 (žemiausias) iki 1000 (aukščiausias, UILayoutPriorityRequired).
  • Aukštesnio prioriteto vaizdas stipriau priešinsis suspaudimui nei žemesnio prioriteto vaizdas.
  • Prioritetas 1000 garantuoja, kad vaizdas nebus sumažintas žemiau savo intrinsic content size, jei tai įmanoma.

Naudojimas:

  • Label su dinamišku tekstu: Jei turite kelis UILabel, kurie gali rodyti skirtingo ilgio tekstus, prioritetų naudojimas padeda nustatyti, kuris label bus pirmas sumažintas, jei jie netilps ekrane.
  • Mygtukai: Kad tekstas ant mygtuko nebūtų apkirptas, galite nustatyti aukštą Compression Resistance Priority savo UILabel.
  • Sudėtingi maketai: Sudėtinguose Auto Layout maketuose prioritetai naudojami sprendžiant neaiškumus dėl vietos trūkumo.

Pavyzdys: Du UILabel horizontaliame tinkle.

let label1 = UILabel()
label1.text = "Trumpas tekstas"
label1.backgroundColor = .red

let label2 = UILabel()
label2.text = "Labai, labai, labai ilgas tekstas"
label2.backgroundColor = .blue

let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Užpildo erdvę, bet gali suspausti turinį

// Numatyta, kad abiejų prioritetai yra vienodi (paprastai 750).
// Abu labeliai proporcingai suspaudžiami.

// Nustatome aukštą prioritetą label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// label2 lieka su prioritetu 750

// Dabar, jei trūksta vietos, label2 bus suspaustas stipriau,
// kad label1 išlaikytų savo dydį.

Ryšys su Content Hugging Priority:

  • Content Hugging Priority nustato, kiek stipriai vaizdas nenorės didėti nuo savo intrinsic content size, kai yra perteklinė vieta.
  • Aukštas Content Hugging Priority = vaizdas "apkabina" savo turinį ir neplėsis.
  • Aukštas Compression Resistance Priority = vaizdas "priešinasi" suspaudimui ir nesumažės.

Šios dvi savybės veikia kartu, kad Auto Layout teisingai paskirstytų erdvę tarp vaizdų.