Что такое Auto Layout в iOS?

«Что такое Auto Layout в iOS?» — вопрос из категории UIKit, который задают на 30% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 при изменении размера экрана, ориентации устройства, контента или шрифта, что является основой для создания адаптивных интерфейсов.