Middle+
За какво са нужни свойствата 'Приоритет на устойчивост към сжатието'?
sobes.tech AI
Отговор от AI
Определя колко упорита ще бъде една изгледа в сравнение с други изгледи при недостатъчно свободно пространство.
Свойства Приоритет на съпротивление при компресия:
- Всяко измерение (Хоризонтално, Вертикално) има свой собствен приоритет.
- Диапазон на стойностите: 1 (най-нисък) до 1000 (най-висок, UILayoutPriorityRequired).
- Изглед с по-висок приоритет ще устои повече на компресията, отколкото изглед с по-нисък приоритет.
- Приоритет 1000 гарантира, че изгледът няма да бъде компресиран под неговия вътрешен размер на съдържанието при никакви обстоятелства, ако е възможно.
Използване:
- Етикет с динамичен текст: Ако имате няколко UILabel, които могат да показват текстове с различна дължина, използването на приоритети помага да се определи кой ще бъде компресиран първи, ако не се побират на екрана.
- Бутоните: За да не бъде текстът на бутона изрязан, можете да зададете висок приоритет за неговия UILabel, използвайки
Приоритет на съпротивление при компресия. - Сложни оформления: В сложни Auto Layout оформления приоритетите се използват за решаване на неясноти при липса на пространство.
Пример: Два UILabel в хоризонтален стек.
let label1 = UILabel()
label1.text = "Кратък текст"
label1.backgroundColor = .red
let label2 = UILabel()
label2.text = "Много, много, много дълъг текст"
label2.backgroundColor = .blue
let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Запълва пространството, но може да компресира съдържанието
// По подразбиране, приоритетите са еднакви (обикновено 750).
// И двата етикета ще се компресират пропорционално.
// Задайте висок приоритет за label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// label2 запазва своя приоритет (750)
// Сега, при липса на пространство, label2 ще се компресира повече,
// за да запази размера си label1.
Връзка с Приоритет на прегръщане на съдържанието (Content Hugging Priority):
Content Hugging Priority: Определя колко упорит ще бъде изгледът да се увеличи над своята вътрешна големина, когато има излишно свободно пространство.- Висока
Content Hugging Priority= изгледът "прегръща" съдържанието си и не се разширява. - Висока
Приоритет на съпротивление при компресия= изгледът устоява на компресия и не се намалява.
Тези две свойства работят заедно, за да помогнат на Auto Layout да разпредели правилно пространството между изгледите.