Ich habe die Einschränkung zu den Schaltflächen hinzugefügt, die in meinem UIView
In My Project können meine Benutzer diese Schaltflächen verschieben und dann habe ich versucht, den erkannten Schaltflächen weitere Einschränkungen hinzuzufügen, aber ich erhalte nur eine endlose Fehlerbeschränkung
%Vor%Wird versuchen, durch Aufhebung der Einschränkung
wiederherzustellen %Vor%Wird versuchen, durch Aufhebung der Einschränkung
wiederherzustellen %Vor%... sollte ich newButtonConstraintX / Y aktualisieren, aber ich verstehe nicht, wie ich das machen kann?
Das Problem besteht darin, dass Sie eine neue Einschränkung hinzufügen, die mit der vorhandenen Einschränkung in Konflikt steht.
Sie haben ein paar Optionen:
Ab iOS 8 können Sie die Eigenschaft active
für eine Einschränkung auf false
setzen, bevor Sie eine neue Einschränkung hinzufügen.
In älteren iOS-Versionen als 8 sollten Sie die alten Einschränkungen entfernen, bevor Sie neue Einschränkungen hinzufügen.
Im Idealfall ist es am besten, Constraints nicht aktivieren / deaktivieren (oder, schlimmer, hinzufügen und entfernen), sondern nur die constant
-Eigenschaft einer einzelnen Constraint ändern. Zum Beispiel in Swift 3/4:
Wenn der gewünschte Effekt erreicht werden kann, indem constant
der Bedingung geändert wird, ist das im Allgemeinen am besten.
Zur Swift 2-Syntax siehe vorherige Überarbeitung dieser Antwort .
Sieht so aus, als würden Sie nur mehr und mehr Einschränkungen hinzufügen. Sie können das nicht tun, weil sie offensichtlich miteinander in Konflikt stehen. Sie sagen im Grunde: "Setzen Sie die Ansicht auf Position x = 1, x = 2, x = 3, x = 4 und x = 5".
Sie müssen die alten Einschränkungen entfernen. Sie haben zwei Möglichkeiten, das zu tun.
Speichern Sie die Abhängigkeiten in einem Array und entfernen Sie diese Einschränkungen aus der Ansicht, bevor Sie neue hinzufügen.
Oder Sie behalten einen Verweis auf die Einschränkungen bei, die ihre Eigenschaften ändern und anpassen.
Da sich Ihre Constraints nur im konstanten Wert unterscheiden, sollten Sie für Option 2 gehen.
Machen Sie newButtonConstraintX
und newButtonConstraintY
zu einer Variablen des viewControllers.
z.B.
%Vor%Tags und Links swift autolayout ios8