Sobes.tech
Middle+

Do czego służą właściwości 'Priorytet odporności na ściskanie'?

sobes.tech AI

Odpowiedź od AI

Określają, jak bardzo widok będzie oporny na zmniejszanie się w porównaniu z innymi widokami przy niewystarczającej ilości wolnej przestrzeni.

Właściwości Priorytet Odporności na Kompresję:

  • Każdy wymiar (Poziomy, Pionowy) ma swój własny priorytet.
  • Zakres wartości: 1 (najniższy) do 1000 (najwyższy, UILayoutPriorityRequired).
  • Widok z wyższym priorytetem będzie "opierał się" kompresji silniej niż widok z niższym priorytetem.
  • Priorytet 1000 gwarantuje, że widok nie zostanie skompresowany poniżej swojego intrinsic content size w żadnych okolicznościach, jeśli to możliwe.

Zastosowanie:

  • Etykieta z dynamicznym tekstem: Jeśli masz kilka UILabeli, które mogą wyświetlać teksty o różnej długości, użycie priorytetów pomaga określić, która etykieta zostanie skompresowana jako pierwsza, jeśli nie zmieszczą się na ekranie.
  • Przyciski: Aby tekst na przycisku nie został obcięty, można ustawić wysoki priorytet Priorytet Odporności na Kompresję dla jego UILabel.
  • Złożone układy: W złożonych układach Auto Layout priorytety służą do rozwiązywania niejednoznaczności przy braku przestrzeni.

Przykład: Dwa UILabel w poziomym stosie.

let label1 = UILabel()
label1.text = "Krótki tekst"
label1.backgroundColor = .red

let label2 = UILabel()
label2.text = "Bardzo bardzo bardzo długi tekst"
label2.backgroundColor = .blue

let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Wypełnia przestrzeń, ale może kompresować zawartość

// Domyślnie priorytety są takie same (zwykle 750).
// Oba label będą kompresowane proporcjonalnie.

// Ustaw wysoką priorytet dla label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// label2 zachowuje domyślną priorytet (750)

// Teraz, gdy brakuje miejsca, label2 będzie się kompresować bardziej,
// aby label1 zachował swój rozmiar.

Związek z Priorytetem Przytulania Zawartości (Content Hugging Priority):

  • Content Hugging Priority: Określa, jak bardzo widok będzie oporny na powiększanie się poza swój intrinsic content size, gdy dostępna jest nadmiarowa przestrzeń.
  • Wysoki Content Hugging Priority = widok "obejmuje" swoją zawartość i się nie rozciąga.
  • Wysoki Priorytet Odporności na Kompresję = widok opiera się kompresji i nie jest zmniejszany.

Te dwie właściwości współpracują, aby pomóc Auto Layout w prawidłowym rozdzielaniu przestrzeni między widokami.