Ответ
Content Compression Resistance Priority (приоритет сопротивления сжатию) — это значение (UILayoutPriority), которое определяет, насколько элемент интерфейса (например, UILabel или UIButton) будет сопротивляться уменьшению своего внутреннего размера (intrinsicContentSize) ниже естественного, если в системе Auto Layout возникает нехватка пространства.
Принцип работы:
Когда два элемента конкурируют за ограниченное пространство, система сжимает тот элемент, у которого ниже приоритет сопротивления сжатию по соответствующей оси (.horizontal или .vertical).
Практический пример с двумя UILabel:
let longLabel = UILabel()
longLabel.text = "Очень длинный текст метки"
// Высокий приоритет = сопротивляется сжатию
longLabel.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
let shortLabel = UILabel()
shortLabel.text = "Коротко"
// Низкий приоритет = сожмется первым
shortLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
// При нехватке горизонтального пространства:
// 1. Система попытается сжать shortLabel.
// 2. Если сжатия shortLabel недостаточно, система начнет сжимать longLabel,
// так как его приоритет тоже ниже обязательного (.required).
Значения приоритета по умолчанию:
.required: 1000 (системные констрейнты)..defaultHigh: 750 (стандартный высокий)..defaultLow: 250 (стандартный низкий).
Связь с другими приоритетами: Этот приоритет работает в паре с Content Hugging Priority (приоритет «объятия» контента), который определяет, насколько элемент сопротивляется увеличению своего размера сверх естественного. Вместе они управляют поведением элементов на основе их внутреннего содержания.