Ответ
contentHuggingPriority определяет приоритет, с которым представление (view) сопротивляется растяжению своего размера сверх его intrinsicContentSize.
Зачем это нужно? В Auto Layout при избытке свободного пространства система решает, какое из представлений растянуть. Это свойство задает «желание» view оставаться компактным.
Практический пример: Два лейбла (titleLabel, valueLabel) расположены в одной строке. Мы хотим, чтобы titleLabel занимал только необходимую ему ширину, а все оставшееся пространство досталось valueLabel.
// titleLabel "обнимает" свой контент, не хочет растягиваться.
titleLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)
// valueLabel имеет низкий приоритет "объятия", поэтому растянется.
valueLabel.setContentHuggingPriority(.defaultLow, for: .horizontal)
Ключевые моменты:
- Приоритеты: Задаются через
UILayoutPriority(1...1000). Стандартные значения:.required(1000),.defaultHigh(750),.defaultLow(250). - Значение по умолчанию:
.defaultHigh(750) для всех осей. - Работа в паре: Используется вместе с
contentCompressionResistancePriority, который управляет поведением при НЕХВАТКЕ места. - Intrinsic Content Size: Оба свойства имеют смысл только для views, у которых есть внутренний размер (UILabel, UIButton, UIImageView).