Je ne pouvais pas comprendre comment changer la priorité d'une contrainte déjà installée.
Changer la priorité d'un NSLayoutConstraint
est une opération peu coûteuse, et utiliser une combinaison de priorités et .LessThanOrEqual
+ .GreaterThanOrEqual
pour les animations est ce que suggère Apple.
Il peut même être agréable d'ajouter un emballage pour cela. tu installerais
x ≦ 40
x ≧ 40 with priority P
x ≧ 20 with priority P + 1
et vous pourrez alors basculer x entre 40 et 20 en changeant la priorité sur la dernière contrainte entre P - 1
et P + 1
.
Il est probablement préférable d'autoriser la modification des priorités via snp_updateConstraints
. Je vais voir ce que cela implique et si cela a des implications.
@danielegert, la branche de développement prend désormais en charge la mise à jour des priorités :
var constraint: Constraint? = nil
view.snp_makeConstraints { (make) -> Void in
constraint = make.edges.equalTo(UIEdgeInsetsMake(10,10,10,10)).priorityHigh()
}
constraint?.updatePriorityLow()
Salut @robertjpayne !
J'essaie de mettre à jour la priorité comme indiqué dans le dernier commentaire.
Mais j'ai cette erreur :
Quel semble être le problème? Utilisation de Snapkit 4.0.0
Commentaire le plus utile
@danielegert, la branche de développement prend désormais en charge la mise à jour des priorités :