Ответ
Работал с Auto Layout через Interface Builder и программно. Использую constraints для создания адаптивных интерфейсов.
Основные подходы:
-
Anchors API (рекомендуемый):
view.addSubview(subview) subview.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ subview.topAnchor.constraint(equalTo: view.topAnchor, constant: 16), subview.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16), subview.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -16), subview.heightAnchor.constraint(equalToConstant: 100) ]) -
UIStackView для группировки элементов
-
Visual Format Language для сложных раскладок
Ключевые концепции:
- Приоритеты constraints (priority от 1 до 1000)
intrinsicContentSizeдля виджетов с естественным размером- Content Hugging/Compression Resistance
- Отладка через
view.debugConstraints()иUIViewAlertForUnsatisfiableConstraints