Ответ
Auto Layout — это система декларативной компоновки интерфейса в iOS/macOS, которая определяет положение и размеры элементов UI с помощью правил, называемых ограничениями (constraints). Она позволяет создавать адаптивные интерфейсы, корректно отображающиеся на разных размерах экранов, ориентациях и контенте.
Основной принцип: Вместо задания жестких координат (frame) вы описываете отношения между элементами (например, "эта кнопка находится на 20 пунктов ниже этого лейбла").
Пример настройки через Anchors (наиболее современный способ):
let button = UIButton(type: .system)
button.setTitle("Tap Me", for: .normal)
button.translatesAutoresizingMaskIntoConstraints = false // КРИТИЧЕСКИ ВАЖНО
view.addSubview(button)
// Активация ограничений
NSLayoutConstraint.activate([
button.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor),
button.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 20),
button.widthAnchor.constraint(greaterThanOrEqualToConstant: 120),
button.heightAnchor.constraint(equalToConstant: 44)
])
Ключевые концепции:
translatesAutoresizingMaskIntoConstraints = false: Обязательный шаг для элементов, чьи ограничения задаются вручную. Отключает автоматическую трансляцию старой системыautoresizingMaskв ограничения.- Типы ограничений: Равенство (
equalTo), неравенство (greaterThanOrEqualTo,lessThanOrEqualTo) с константами и множителями (multiplier). - Приоритет (
priority): Разрешает конфликты, указывая, какое ограничение важнее (значение от 1 до 1000). - Safe Area Layout Guide: Предпочтительная привязка к безопасным областям, чтобы избежать наложения на вырез или индикатор дома.
- Intrinsic Content Size: Собственный размер элементов (например,
UILabelилиUIButton), который Auto Layout учитывает автоматически.