Вопрос проверяет понимание жизненного цикла layout и правильного выбора метода для работы с размерами.
Гарантированно известные размеры view доступны после выполнения layout.
Чаще всего для этого используют viewDidLayoutSubviews.
В этот момент Auto Layout уже рассчитан.
Размеры можно безопасно использовать для вычислений и анимаций.
Auto Layout рассчитывает размеры не сразу, а в процессе layout-цикла.
Перед перечислением важно понять, что на ранних этапах lifecycle размеры могут быть временными.
viewDidLoad — размеры не финальные
viewWillAppear — layout ещё не завершён
viewDidLayoutSubviewsoverride func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let width = view.bounds.width
}
Auto Layout уже применён
frame и bounds актуальны
метод вызывается после каждого пересчёта layout
layoutSubviews внутри UIView
completion у анимаций layout
Если нужны реальные размеры view при Auto Layout, использовать нужно viewDidLayoutSubviews. Это самый надёжный момент layout-цикла.