Каково сопротивление сжатию контента и объятие контента в UIView?

Каково сопротивление сжатию контента и объятие контента в UIView? Как они соотносятся с внутренним размером контента представления?

1 ответ

Решение

Взято из превосходной статьи об инструменте Advanced Auto Layout Toolbox от objc.io:

Размер внутреннего содержимого

Внутренний размер содержимого - это размер, который предпочитает иметь представление для определенного содержимого, которое оно отображает. Например, UILabel имеет предпочтительную высоту, основанную на шрифте, и предпочтительную ширину, основанную на шрифте и отображаемом тексте. UIProgressView имеет только предпочтительную высоту, основанную на его иллюстрации, но не имеет предпочтительной ширины. Обычный UIView не имеет ни предпочтительной ширины, ни предпочтительной высоты.

Сопротивление сжатию и удерживание содержимого

Каждое представление имеет приоритеты сопротивления сжатию контента и приоритеты объятия контента, назначенные для обоих измерений. Эти свойства вступают в силу только для представлений, которые определяют собственный размер контента, в противном случае не определен размер контента, который мог бы противостоять сжатию или быть обнятым.

За кулисами внутренний размер контента и эти значения приоритетов преобразуются в ограничения. Для метки с внутренним размером содержимого { 100, 30 }, приоритетом сопротивления сжатию по горизонтали / вертикали 750 и приоритетом объятия содержимого по горизонтали / вертикали 250, будут сгенерированы четыре ограничения:

H:[label(<=100@250)] 
H:[label(>=100@750)]
V:[label(<=30@250)]
V:[label(>=30@750)]

Если вы не знакомы с языком визуального формата для ограничений, использованных выше, вы можете прочитать об этом в документации Apple. Помня о том, что эти дополнительные ограничения создаются неявно, помогает понять поведение Auto Layout и лучше понять его сообщения об ошибках.

Вот еще один вопрос Stackru, касающийся разницы между сопротивлением сжатию контента и объятием контента: Какао Autolayout: объятие контента против приоритета сопротивления сжатия контента

Другие вопросы по тегам