Sobes.tech
Middle+

Na co jsou vlastnosti 'Priorita odolnosti proti stlačení'?

sobes.tech AI

Odpověď od AI

Určuje, jak mocně bude pohled odolávat zmenšení ve srovnání s ostatními pohledy při nedostatku volného prostoru.

Vlastnosti Priorita Odporu vůči Kompresi:

  • Každý rozměr (Vodorovný, Svislý) má svou vlastní prioritu.
  • Rozsah hodnot: 1 (nejnižší) do 1000 (nejvyšší, UILayoutPriorityRequired).
  • Pohled s vyšší prioritou bude odolávat stlačení více než pohled s nižší prioritou.
  • Priorita 1000 zaručuje, že pohled nebude stlačen pod jeho vnitřní velikost obsahu za žádných okolností, pokud je to možné.

Použití:

  • Štítek s dynamickým textem: Pokud máte několik UILabel, které mohou zobrazovat texty různých délek, použití priorit pomáhá určit, který bude první stlačen, pokud se nevejdou na obrazovku.
  • Tlačítka: Aby text na tlačítku nebyl oříznut, můžete nastavit vysokou prioritu pro jeho UILabel pomocí Priorita Odporu vůči Kompresi.
  • Složitější rozvržení: V složitých rozvrženích Auto Layout jsou priority používány k řešení nejasností při nedostatku prostoru.

Příklad: Dva UILabel v horizontálním stacku.

let label1 = UILabel()
label1.text = "Krátký text"
label1.backgroundColor = .red

let label2 = UILabel()
label2.text = "Velmi velmi dlouhý text"
label2.backgroundColor = .blue

let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Vyplní prostor, ale může stlačit obsah

// Výchozí jsou stejné priority (obvykle 750).
// Oba štítky se budou proporcionálně stlačovat.

// Nastavte vysokou prioritu pro label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// label2 si zachová svou výchozí prioritu (750)

// Nyní, při nedostatku prostoru, bude label2 více stlačen,
// aby si label1 zachoval svou velikost.

Vztah k Prioritě obejmutí obsahu (Content Hugging Priority):

  • Content Hugging Priority: Určuje, jak moc bude pohled neochotný zvětšit se nad svou vnitřní velikost obsahu, když je k dispozici nadbytečný volný prostor.
  • Vysoká Content Hugging Priority = pohled "objímá" svůj obsah a neexpanduje se.
  • Vysoká Priorita Odporu vůči Kompresi = pohled odolává stlačení a nezmenšuje se.

Tyto dvě vlastnosti spolupracují, aby pomohly Auto Layout správně rozdělit prostor mezi pohledy.