Почему viewdidlayoutsubviews вызывает несколько раз?
Я разрабатываю iOS Universal App на Swift, используя автоматическую компоновку и поддерживаю только портрет.
Я нашел UIViewController#viewdidlayoutsubviews
несколько раз. Вместо этого viewDidLoad
ТОЛЬКО звонит один раз при запуске MyApp UIViewController.
Почему viewdidlayoutsubviews вызывает несколько раз? Ограничения на каждый UIView (UIButtons, UITextFields и т.д.) Будут выполняться в порядке?
Любая информация будет оценена.
Ответы
Ответ 1
LoadView
называется только: когда нужно загружать представление.
LayoutSubviews
, однако, вызывается один раз за цикл цикла на любом представлении, на котором он вызывал setNeedsLayout
или setNeedsDisplayInRect
- это включает в себя всякий раз, когда под просмотр было добавлено в представление, прокрутка, изменение размера и т.д.
См. эту ссылку для получения дополнительной информации. Он использует Objective-C, но информация по-прежнему сохраняется.
Ответ 2
Лучшее, что нужно сделать, и это хорошо мне помогло - это привыкнуть добавлять журнал или выражение о печати методам, из которых вы не уверены
Я использую это → print ( "Hello From (NSStringFromSelector (#function))" )
или это, если внутри подкласса View
Swift.print( "Hello From (NSStringFromSelector (#function))" )
Он выведет метод при его вызове.