Ответ
Нет, в viewWillAppear размеры view могут быть неактуальны или нулевыми. Лайаут представления ещё не завершён. Для получения гарантированно точных геометрических данных используйте:
viewDidLayoutSubviews()— вызывается после каждого изменения лайаута (наиболее точный метод).viewDidAppear()— размеры уже установлены, но метод вызывается позже.
Пример:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// Размеры view.frame теперь актуальны
print("Ширина: (view.frame.width), Высота: (view.frame.height)")
}
Почему? В viewWillAppear система может передавать размеры из предыдущего состояния интерфейса (например, до поворота устройства) или размеры, установленные в Storyboard, которые ещё не адаптировались к текущим условиям.