web-dev-qa-db-fra.com

Comment déclencher une mise à jour de toutes les contraintes de mise en page automatique?

J'ai modifié par programme une contrainte de mise en page automatique. Il prend effet sur une certaine vue, mais les autres vues liées à d'autres contraintes sur cette vue ne modifient pas leur position. Existe-t-il une méthode "pdateAllConstraints"?

17
János

Le problème était que les contraintes n'étaient pas configurées correctement, et dans ce cas, aucun des éléments setNeedsLayout ou updateConstraintsIfNeeded ne peut aider.

2
János

Appelez ces deux méthodes sur la vue que vous souhaitez mettre à jour:

-setNeedsLayout
-layoutIfNeeded

Le premier dit au système de mise en page que cette vue doit être présentée, car elle a des changements et tout doit être recalculé. La seconde force le système de mise en page à s'exécuter maintenant, le système de mise en page est déclenché à des moments spécifiques pendant l'exécution, avec cette méthode vous dites: "faites-le maintenant".

36
Andrea

Oui Il existe une méthode sur UIView appelée - (void)updateConstraintsIfNeeded

https://developer.Apple.com/Library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//Apple_ref/occ/instm/UIView/updateConstraintsIfNeeded

Mais je ne pense pas que ce soit votre problème

3
Hani Ibrahim