2017-09-13 2 views
0

Ich suche nach einer Alternative für viewDidLayoutSubviews, die nur einmal aufgerufen wird.Entspricht "viewDidLayoutSubviews", das nur einmal aufgerufen wird?

Ich benutze diesen Code, um das Login aus dem Blick zu bewegen:

override func viewDidLayoutSubviews() { 
    username_input.center.x -= view.bounds.width 
    password_input.center.x -= view.bounds.width 
    login_button.center.x -= view.bounds.width 
} 

Ich brauche dies einmal zu tun, so dass ich dann in einer Animation, wenn viewDidAppear bewegen kann. Das alles hat super funktioniert, bis ich meine View in verschiedene Subviews aufgeteilt habe und die Funktion nun mehrfach aufgerufen wird. Ich konnte keine gleichwertigen Funktionen finden, die nur einmal aufgerufen werden.

Antwort

2

Definieren Sie einen booleschen Wert, der zum ersten Mal false wird viewDidLayoutSubviews wird ausgeführt. Ich habe das viele Male gemacht und es funktioniert gut.

fileprivate var firstLayoutSubviewsTime = true 

override func viewDidLayoutSubviews() { 
    if firstLayoutSubviewsTime { 
     firstLayoutSubviewsTime = false 

     [...] 
    } 
} 
+0

Ich wollte gerade das vorschlagen. (Voted) –

+0

Ok, das ist es auch, was ich gerade mache, aber ich dachte, dass es vielleicht eine bessere und sauberere Lösung gibt – BeatzCraft

Verwandte Themen