2017-03-01 2 views
0

J'utilise la mise en page automatique et les champs de texte alignés les uns par rapport aux autres. Mais maintenant que toute l'application est prête, il y a un cas spécial où tout sera caché sauf UN seul champ de texte. Donc, en déplaçant ce champ de texte avec .frame.origin.yExiste-t-il un moyen d'exécuter .frame.origin.y avant la mise en page automatique?

Le problème est que ce champ de texte apparaît maintenant au milieu pendant une seconde, car autolauout fait son travail en premier. Je ne veux pas éteindre entièrement autolayout, je veux juste être en mesure de FAIRE QUELQUEFOIS avant autolauout.

J'ai essayé viewdidappear et le début de viewDidLoad

Répondre

1

Mettez votre code dans viewDidLayoutSubviews. C'est le moment où l'autolayout est appliqué. Utilisez une condition pour vous assurer que votre code ne s'exécute que dans les bonnes conditions, car viewDidLayoutSubviews peut être appelé plusieurs fois au cours de la vie de votre application, et la plupart du temps, vous ne voulez pas qu'il fasse quelque chose de spécial. Sachez que la modification du code frame.origin.y peut entraîner un conflit avec vos contraintes de mise en page automatique. La façon correcte de faire ce genre de chose est de changer les contraintes . Vous aurez probablement besoin de configurer une sortie à la contrainte désirée afin que vous puissiez vous y référer dans le code; De cette façon, vous pouvez simplement changer constant de cette contrainte.

+0

Merci ... C'est ce que je cherchais. J'ai dû improviser ici. –