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.