Ist es unter iOS erforderlich, API-Aufrufe auszuführen (z. B. setNeedsLayout
oder layoutIfNeeded
), nachdem die Konstante einer Beschränkung programmgesteuert geändert wurde? In meinem Anwendungsfall bin ich nicht daran interessiert, die Änderung zu animieren. Ich glaube, es gibt einige Fehler (zB: dies eine ), in der diese Funktionen aufgerufen werden. Aber abgesehen von diesem Randfall musste ich sie nicht in meinem Code nennen. Funktioniert das zufällig, oder gibt es eine definitive Quelle, die angibt, was zu tun ist, wenn man Constraint-Konstanten ändert?
Ein paar Antworten von SO ( hier und hier ) sagen, dass das Setzen der Konstante genug sein sollte, aber ohne irgendeine unterstützende Referenz.
Apples iOS Auto Layout Guide erwähnt nichts davon außer in Animationsblock . The Cocoa Versionshinweise zu Auto-Layouts Sagen Sie, dass das Aufrufen von setNeedsLayout
nicht erforderlich ist, es sei denn, Sie überschreiben auch layout
in Ihrer benutzerdefinierten Ansicht. Dieses Dokument scheint jedoch eher OSX-spezifisch zu sein.
Wenn Sie sofort den richtigen Sichtbereich erhalten möchten, sollten Sie diese APIs manuell aufrufen. (z. B. Animation Anfang / Ende-Frame abrufen) Oder wir müssen diese APIs nicht manuell aufrufen.
Ich benutze MASConstraint Framework und ich nenne diese APIs nie.
Ich bin mir nicht sicher, ob es notwendig ist, wenn Sie Constraint hinzufügen / entfernen, aber Constraint nicht aktualisieren. : (
Tags und Links ios autolayout constraints