4 votes

Comment invalider les contraintes de uiview

Je voudrais invalider les contraintes d'une UIView depuis le code pour forcer tous les champs à se repositionner en fonction d'un changement spécifique dans la vue.

Par exemple, supposons que j'ai deux UILabels auxquels est attribuée une contrainte d'espacement vertical fixe. Et lors d'un événement utilisateur, je redimensionne le label qui est en haut. Je voudrais pouvoir forcer l'invalidation de la contrainte depuis le code.

C'est la première fois que j'utilise des contraintes et je ne comprends pas comment je peux le faire depuis le code. Je sais que lorsque l'appareil est pivoté, les contraintes sur les UIViews sont invalidées.

6voto

jrturton Points 64875

Vous appelez setNeedsLayout sur la vue concernée, en général la .view de votre contrôleur de vue.

[self.view setNeedsLayout];

Vous n'invaliditez pas vraiment les contraintes, c'est une chose légèrement différente utilisée pour les vues personnalisées qui peuvent nécessiter la suppression et le recalcul des contraintes en fonction d'autres changements. Ce que vous faites, c'est informer la vue que certains des facteurs qu'elle a utilisés pour calculer sa mise en page ont changé. Les contraintes sont toujours valides, mais les résultats ont changé.

Pour animer vers votre nouvelle mise en page, vous pouvez appeler layoutIfNeeded à l'intérieur d'un bloc d'animation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X