Подтвердить что ты не робот

Почему viewdidlayoutsubviews вызывает несколько раз?

Я разрабатываю iOS Universal App на Swift, используя автоматическую компоновку и поддерживаю только портрет.

Я нашел UIViewController#viewdidlayoutsubviews несколько раз. Вместо этого viewDidLoad ТОЛЬКО звонит один раз при запуске MyApp UIViewController.

Почему viewdidlayoutsubviews вызывает несколько раз? Ограничения на каждый UIView (UIButtons, UITextFields и т.д.) Будут выполняться в порядке?

Любая информация будет оценена.

4b9b3361

Ответ 1

LoadView называется только: когда нужно загружать представление.

LayoutSubviews, однако, вызывается один раз за цикл цикла на любом представлении, на котором он вызывал setNeedsLayout или setNeedsDisplayInRect - это включает в себя всякий раз, когда под просмотр было добавлено в представление, прокрутка, изменение размера и т.д.

См. эту ссылку для получения дополнительной информации. Он использует Objective-C, но информация по-прежнему сохраняется.

Ответ 2

Лучшее, что нужно сделать, и это хорошо мне помогло - это привыкнуть добавлять журнал или выражение о печати методам, из которых вы не уверены

Я использую это → print ( "Hello From (NSStringFromSelector (#function))" )

или это, если внутри подкласса View Swift.print( "Hello From (NSStringFromSelector (#function))" )

Он выведет метод при его вызове.