2014-05-04 9 views

Antwort

30

aus der Dokumentation:

Wenn eine Grenze Änderung ist die Ansicht, die Ansicht, die die Position seiner Subviews einstellt. Ihr Ansichts-Controller kann diese Methode überschreiben, um Änderungen vorzunehmen, bevor die Ansicht ihre Untersichten ausgibt. (Link)

viewWillLayoutSubviews wird zu jeder Zeit Ihre Ansicht Controller genannt Ansicht geändert hat seine Grenzen. Dies passiert, wenn die Ansicht geladen wird, wenn ein Rotationsereignis auftritt oder wenn die Größe eines untergeordneten Ansicht-Controllers durch seine Eltern geändert wird. (Es gibt wahrscheinlich auch andere Situationen). Wenn es etwas gibt, das Sie aktualisieren müssen, bevor diese Ansicht sich selbst definiert (und bevor Ihre Beschränkungen erneut angewendet werden), sollten Sie dies hier tun. Sie sollten im Allgemeinen nicht Update-Constraints hier, weil Update-Einschränkungen einen anderen Layout-Durchlauf verursachen können.

viewDidLayoutSubviews wird aufgerufen, sobald alle Ihre Subviews angelegt wurden. Wenn Sie das Layout zum Beispiel manuell anpassen müssen, indem Sie Frames manuell anpassen, ist dies der richtige Ort dafür.

View Controller-Lebenszyklus kann ein wenig verwirrend sein, aber es lohnt sich zu versuchen, wirklich zu verstehen, wenn Sie viel iOS-Entwicklung tun werden. This article ist ein wirklich guter Überblick.

+0

Sie erwähnten seine nicht gut zu aktualisierten Einschränkungen hier? ... Ich dachte, dies ist der beste Ort, um das zu tun –

+0

Wird dies aufgerufen, wenn wir die Kindansichten nicht ändern, aber wir verschieben nur die x, y-Koordinaten des Rahmens? (d. h. Grenzen bleiben gleich, aber der Rahmen wurde verschoben). – mskw

Verwandte Themen