Какие основные способы верстки интерфейсов существуют в UIKit?

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

Ответ

1. Ручное позиционирование (Frame-based) Прямое задание frame, bounds или center. Подходит для кастомной анимации или высокопроизводительных view.

view.frame = CGRect(x: 20, y: 20, width: 100, height: 100)

2. Автоматическое изменение размера (Autoresizing Masks) Устаревший механизм, определяющий, как view изменяет размер относительно superview. Работает в паре с frame-based layout.

view.autoresizingMask = [.flexibleWidth, .flexibleTopMargin]

3. Авто-лейаут (Auto Layout) Основной современный способ. Позволяет описывать отношения (констрейнты) между элементами.

view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    view.topAnchor.constraint(equalTo: superview.topAnchor, constant: 20),
    view.leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: 20),
    view.widthAnchor.constraint(equalToConstant: 100)
])

Можно задавать и через Visual Format Language: "H:|-[view]-|".

4. Стек-вью (UIStackView) Контейнер, который автоматически управляет layout дочерних view по оси (горизонтально или вертикально). Часто используется внутри Auto Layout.

5. Интерфейс Билдер (Storyboard/XIB) Визуальный редактор, который генерирует Auto Layout констрейнты или Stack Views.

Практика: Для большинства интерфейсов используется комбинация Auto Layout и UIStackView. Frame-based подход остается для специфических задач, например, ручного управления анимацией layer.