setNeedsLayout oder layoutIfNeeded erforderlich, nachdem die Constraint-Konstante geändert wurde?

9

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.

    
Gantless 06.03.2015, 20:13
quelle

2 Antworten

0

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. : (

    
Harrison Xi 10.08.2015 09:58
quelle
0

Ja, es ist notwendig, setNeedsLayout nach dem Ändern der constant einer Layouteinschränkung aufzurufen, da diese Änderung allein nicht als Invalidierung des Layouts zählt.

    
fabb 06.10.2015 06:39
quelle

Tags und Links