2013-12-08 1 views
13

Ich änderte programmgesteuert ein Autolayout Constrain. Es wirkt sich auf eine bestimmte Ansicht aus, aber andere Ansichten, die mit anderen Einschränkungen auf diese Ansicht beschränkt sind, ändern ihre Positionen nicht. Existiert eine "updateAllConstrains" Methode?Wie kann ich auslösen, um alle Beschränkungen der automatischen Anordnung zu aktualisieren?

+0

Vielleicht helfen Sie, einen Bildschirm Ihrer Einschränkungen coud schreiben: Der einzige Gedanke, den ich annehmen kann, ist, dass diese anderen Ansichten irgendwie durch nicht dehnbare Zwänge mit anderen Elementen verbunden sind. – nikans

Antwort

2

Das Problem war, dass Constrains nicht ordnungsgemäß eingerichtet wurden, und in diesem Fall kann nicht die setNeedsLayout oder updateConstraintsIfNeeded helfen.

28

Rufen Sie diese beiden Methoden auf der Ansicht, die Sie aktualisiert werden soll:

-setNeedsLayout 
-layoutIfNeeded 

Der erste sagt dem Layout-System, dass diese Ansicht angelegt werden muss, weil es einige Änderungen hat und alles neu berechnet werden sollte. Die zweite Kraft, die das Layoutsystem jetzt ausführen soll, ist, dass das Layoutsystem zu bestimmten Zeiten während der Laufzeit ausgelöst wird. Mit dieser Methode sagst du: "mach es jetzt".

+0

Kann ich Constrains eines Imageview durch UIButton click ändern? Wenn ja, wie erklären Sie bitte, wie ich neu darin bin. – Sofeda

+0

Stimme voll und ganz mit dieser Antwort überein! – Hamsternik

0

Beste ich gefunden habe ist:

  1. die Elemente auswählen, die Sie "Pop" zurück zu Ihren Einschränkungen

  2. Top-Menü mögen: Editor/Update Frames (oder /) Abkürzung Befehl + Option + =

Hoffentlich

Verwandte Themen