Ответ
Auto Layout — это декларативная система компоновки интерфейса в UIKit и SwiftUI (через UIViewRepresentable), которая динамически вычисляет позицию и размер элементов на основе набора правил — ограничений (constraints).
Ключевые принципы:
- Constraints (Ограничения) — линейные уравнения, описывающие отношения между атрибутами (leading, top, width и т.д.) одного или нескольких представлений. Например,
button.leading = view.leading + 20. - Приоритет (Priority) — значение от 1 до 1000, определяющее порядок разрешения конфликтующих ограничений.
- Внутренний размер (Intrinsic Content Size) — естественный размер элемента, основанный на его содержимом (например, у
UILabelилиUIButton).
Практический пример (UIKit):
let button = UIButton(type: .system)
button.setTitle("Tap Me", for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false // Важно: отключаем автоматическую конвертацию frame в constraints
view.addSubview(button)
// Активация ограничений
NSLayoutConstraint.activate([
button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
button.centerYAnchor.constraint(equalTo: view.centerYAnchor),
button.widthAnchor.constraint(equalToConstant: 200),
button.heightAnchor.constraint(equalToConstant: 50)
])
Почему это важно: Auto Layout автоматически пересчитывает layout при изменении размера экрана, ориентации устройства, контента или шрифта, что является основой для создания адаптивных интерфейсов.