2017-03-01 4 views
0

Ich verwende Auto-Layout und habe Textfelder aneinander ausgerichtet. Aber jetzt, wo die ganze App fertig ist, gibt es einen speziellen Fall, wo alles außer einem Textfeld versteckt wird. Also verschiebe ich dieses Textfeld mit .frame.origin.yGibt es eine Möglichkeit, .frame.origin.y vor dem automatischen Layout auszuführen

Das Problem ist, dass dieses Textfeld jetzt für eine Sekunde in der Mitte erscheint, weil autolauout seine Arbeit zuerst erledigt. Ich möchte das Auto-Layout nicht komplett ausschalten, ich möchte einfach so etwas vor dem Autolaus machen können.

versuchte ich ViewDidAppear und den Beginn der viewDidLoad

Antwort

1

Ihren Code in viewDidLayoutSubviews Put. Das ist der Moment, in dem das automatische Layout angewendet wird. Verwenden Sie eine Bedingung, um sicherzustellen, dass Ihr Code nur unter den richtigen Bedingungen ausgeführt wird, da viewDidLayoutSubviews im Laufe der Laufzeit Ihrer App oft aufgerufen werden kann, und in den meisten Fällen möchten Sie nichts Besonderes.

Beachten Sie, dass das Ändern der frame.origin.y einen Konflikt mit Ihren automatischen Layout-Einschränkungen verursacht. Der richtige Weg, um so etwas zu tun, ist die Constraints zu ändern. Sie müssen wahrscheinlich eine Steckdose für die gewünschte Einschränkung konfigurieren, so dass Sie im Code darauf verweisen können; Auf diese Weise können Sie nur die constant dieser Einschränkung ändern.

+0

Danke ... Das ist, was ich gesucht habe. Musste hier improvisieren. –

Verwandte Themen