web-dev-qa-db-fra.com

Quand les méthodes ViewWillLayoutSubviews et ViewDidLayoutSubviews sont-elles appelées?

Quand les méthodes ViewWillLayoutSubviews et ViewDidLayoutSubviews de UIViewController sont-elles appelées? Quel est le statut du cadre de la vue avant willLayoutSubviews?

25
Waseem05

de la documentation:

Lorsque les limites d'une vue changent, la vue ajuste la position de ses sous-vues. Votre contrôleur de vue peut remplacer cette méthode pour apporter des modifications avant que la vue ne présente ses sous-vues. (Lien)

viewWillLayoutSubviews est appelé chaque fois que la vue de votre contrôleur de vue a ses limites changées. Cela se produit lorsque la vue est chargée, lorsqu'un événement de rotation se produit ou lorsqu'un contrôleur de vue enfant a sa taille modifiée par son parent. (Il y a probablement d'autres situations aussi). S'il y a quelque chose que vous devez mettre à jour avant que cette vue ne se présente (et avant que vos contraintes ne soient réappliquées), vous devez le faire ici. vous devez généralement ne pas mettre à jour les contraintes ici, car la mise à jour des contraintes peut provoquer une autre passe de mise en page.

viewDidLayoutSubviews est appelé une fois que toutes vos sous-vues ont été présentées. Si vous devez affiner cette disposition en ajustant manuellement les cadres, par exemple, ce serait l'endroit pour le faire.

le cycle de vie du contrôleur de vue peut être un peu déroutant, mais cela vaut la peine d'essayer de vraiment comprendre si vous allez faire beaucoup de développement iOS. Cet article est un très bon aperçu.

46
cmyr