Ответ
Свойство intrinsicContentSize определяет естественный, «желаемый» размер элемента, основанный на его содержимом. Его имеют следующие элементы UIKit:
UILabel,UITextField,UITextView— размер вычисляется на основе текста, шрифта и атрибутов.UIImageView— размер равен размеру его изображения (image.size).UIButton— размер зависит от заголовка (title), изображения (image) и внутренних отступов (contentEdgeInsets).- Элементы управления с фиксированным размером:
UISwitch,UISlider,UIStepper,UIActivityIndicatorViewи другие.
Пример использования:
let label = UILabel()
label.text = "Hello, World!"
label.font = UIFont.systemFont(ofSize: 16)
print(label.intrinsicContentSize) // Например, (98.0, 20.0)
label.sizeToFit() // Изменяет frame в соответствии с intrinsicContentSize.
Важно:
- Auto Layout использует
intrinsicContentSizeдля расчета ограничений (constraints). - Для кастомного
UIViewможно переопределить свойствоintrinsicContentSize, чтобы он сообщал системе свой естественный размер. - Если содержимое меняется (например, текст в
UILabel), нужно вызватьinvalidateIntrinsicContentSize(), чтобы система пересчитала layout.