web-dev-qa-db-fra.com

Pourquoi viewdidlayoutsubviews appelle plusieurs fois?

Je développe iOS Universal App sur Swift, en utilisant la mise en page automatique et en ne prenant en charge que le mode portrait.

J'ai trouvé UIViewController#viewdidlayoutsubviews appelé plusieurs fois. À la place, viewDidLoad appelle UNIQUEMENT une fois au démarrage de la variable UIViewController de MyApp. 

Pourquoi viewdidlayoutsubviews appeler plusieurs fois? Les contraintes sur chaque UIView (UIButtons, UITextFields, etc. ..) fonctionneront dans l'ordre?

Toute information sera appréciée.

21
Michitaka

LoadView n'est appelé qu'un: lorsque la vue doit être chargée.

LayoutSubviews, cependant, est appelé une fois par boucle d'exécution sur toute vue sur laquelle setNeedsLayout ou setNeedsDisplayInRect a été appelée - cela inclut chaque fois qu'une sous-vue a été ajoutée à la vue, un défilement, un redimensionnement, etc. 

21
Hayley Guillou

La meilleure chose à faire et cela m’a bien servi - est de prendre l’habitude d’ajouter un journal ou une instruction print à des méthodes dont vous n'êtes pas sûr.

Je l'utilise ->

print("Hello From \(NSStringFromSelector(#function))")

ou ceci si à l'intérieur d'une sous-classe de vue

Swift.print("Hello From \(NSStringFromSelector(#function))")

Il imprimera la méthode quand il est appelé.

0
Morten Carlsen