Ответ 1
Взято из objc.io отлично статья расширенного автоматического макетa > a > :
Внутренний размер содержимого
Внутренний размер содержимого - это размер, который вид предпочитает иметь для определенного содержимого, которое он отображает. Например, UILabel имеет предпочтительную высоту на основе шрифта и предпочтительную ширину на основе шрифта и текста, который он отображает. UIProgressView имеет только предпочтительную высоту, основанную на ее оформлении, но не имеет предпочтительной ширины. Простой UIView не имеет ни предпочтительной ширины, ни предпочтительной высоты.
Сопротивление сжатию и обжатие содержимого
У каждого представления есть контент приоритеты устойчивости к сжатию и приоритеты в отношении содержимого назначенный для обоих измерений. Эти свойства вступают в силу только для которые определяют внутренний размер содержимого, в противном случае нет определенный размер содержимого, который может противостоять сжатию или обниматься.
За кулисами внутренний размер содержимого и этот приоритет значения переводятся в ограничения. Для ярлыка с внутренним размер содержимого {100, 30}, горизонтальное/вертикальное сжатие приоритет сопротивления 750 и обнимание по горизонтали/вертикали приоритет 250, будут созданы четыре ограничения:
H:[label(<[email protected])] H:[label(>[email protected])] V:[label(<[email protected])] V:[label(>[email protected])]
Если вы не знакомы с языком визуального формата для ограничения, используемые выше, вы можете прочитать об этом в Яблоки документация. Имея в виду, что эти дополнительные ограничения неявно помогает понять поведение Auto Layouts и лучше понять сообщения об ошибках.
Вот еще один вопрос StackOverflow, который учитывает разницу между сопротивлением сжатия контента и обниманием содержимого: Cocoa Автоопределение: обход содержимого и степень сопротивления сжатию содержимого