Sobes.tech
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 да разпредели правилно пространството между изгледите.