Какие способы верстки UI использовал в iOS
Что проверяют
Опыт, а не список названий: писали ли вы интерфейсы руками, как решали адаптивность, что делали с конфликтами констрейнтов. Дальше почти всегда спрашивают, что выберете для нового экрана в текущем проекте и почему.
Как отвечать
Пройдитесь по инструментам с оценкой, где каждый уместен:
- Storyboard: наглядно и быстро на старте, но тяжело мержится, а связи через
@IBOutletломаются в рантайме, а не на компиляции; - XIB: та же графика, но на один экран или ячейку. Конфликтов меньше, переиспользовать проще;
- код: полный контроль, читаемый дифф, легко переиспользовать. Основа это якоря (
topAnchor,leadingAnchor) иUIStackViewтам, где элементы идут потоком; - SwiftUI: декларативно, интерфейс это функция от состояния,
@State,@Binding, модели через макрос@Observable, превью через#Preview.
Про Auto Layout расскажите не определение, а рабочие детали: приоритеты, content hugging и compression resistance, зачем translatesAutoresizingMaskIntoConstraints = false, как разбираете Unable to simultaneously satisfy constraints и почему в ячейке таблицы один констрейнт понижают до 999. Про списки: UICollectionViewCompositionalLayout и diffable data source вместо ручной работы с indexPath.
Отдельно скажите про смешанный проект, это честный ответ для продукта с историей: UIHostingController встраивает SwiftUI в UIKit, UIHostingConfiguration кладёт SwiftUI внутрь ячейки, а UIViewRepresentable работает в обратную сторону. Новые экраны пишем декларативно, старые остаются как есть.
Закончите тем, что реально ломает вёрстку: Dynamic Type и крупные шрифты, тёмная тема, safe area и клавиатура, длинные строки локализации.
Где спотыкаются
Отвечают одним словом «SwiftUI» и плывут на вопросе про минимальную версию iOS или про отладку конфликта констрейнтов.
Ставят Auto Layout в один ряд со сторибордом и кодом. Это система ограничений, она работает и там, и там.
Не могут объяснить свой выбор для конкретного экрана. Ответ «везде программно, потому что так правильнее» без причины выглядит слабее, чем «экран собрали кодом, ячейки на SwiftUI через конфигурацию, потому что там сложный текст».