J'ai des problèmes de détermination de la création lorsque la configuration code> Contraintes auto-contraintes code> sur un Pour plus d'explication: p>
Dans ces 2 méthodes ( Quand ces contraintes automatiques sont-elles appliquées et quand les opérations nécessaires devraient-elles avoir besoin de la trame / limite réelle des sous-espions ont lieu? P>
J'utilise Xcode 6.3, Swift (1.2) P> xib code> est appliquée dans le processus de configuration de la vue. P>
xib code> pour une vue li>
iboutlet code>)
cadres / limites code> dans la
ViewDidLoad code> Méthode Li>
iboutlet code>)
cadres / limites code> dans la méthode
éraftfromnib code> méthode li>
ul>
ViewController :: ViewDidLoad and View :: Awakeffromnib >) Les vues iboutlet ont été chargées mais les contraintes n'ont pas encore été appliquées. La trame réelle est toujours réglée sur la taille de l'iPhone 3.5 "(largeur 320) lors de l'utilisation d'un simulateur plus grand (tel que le simulateur iPhone 6). P>
3 Réponses :
Les contraintes sont appliquées dans la méthode code> layoutsubviews code>. Donc, si vous voulez faire quelque chose après leur application dans une sous-classe code> uiview code>, remplacez la méthode: dans un Veuillez noter que vous ne devez pas définir uiviewontroller code> Sous-classe, Utilisez
ViewDidLayouTouSubviews code> dans le même objectif: p>
image code> /
/
code> Pour une vue si vous avez ajouté des contraintes de mise en page automatiques à cette vue. p> p>
Tout en travaillant avec une sous-classe Uitabilieviewcell personnalisée, cela seul n'a pas mis à jour les cadres immédiatement; Seulement faire défiler l'éloignement d'une cellule et a à nouveau amené à être aménagé. Ajouter setneedslayout (); Layl / code> à la fin de mon
UpdateConstraints code> Le remplacement semble l'avoir corrigé. Étonnamment, remplaçant
Layoutifned code> avec
Layout code> n'a pas fonctionné, pas même après
SETNEEDSLAYOUT code>.
Remarque pour Xcode 8: Si vous utilisez la mise en page automatique, vous pouvez avoir un problème avec une nouvelle fonctionnalité: voir [n'importe quel périphérique] em>. Lorsque vous testez votre application sur un autre périphérique (simulateur) et que vous avez afféreur em> écran, les limites de l'écran de ce périphérique seront appliquées dans ViewwilllayouTouSubviews EM>. P>
Vous pouvez utiliser la méthode } p> mais cette méthode sera appelée plusieurs fois dans le cycle de vie d'une vue, telle que le changement d'orientation ou les vues de déménagement et de sortie , alors vous devez gérer cela. p> p>