2017-09-13 5 views
0

私はviewDidLayoutSubviewsの代替手段を探していますが、これは一度しか呼び出されません。"viewDidLayoutSubviews"に一度しか呼び出されないのと同じですか?

私は、ビューの外ログインを移動するには、このコードを使用します。私は、アニメーションviewDidAppearでそれを動かすことができるように

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

私は、一度これを実行する必要があります。これは私のビューを別のサブビューに分割するまでうまくいきました。今度は関数が複数回呼び出されます。私は一度だけ呼び出されるこれと同等の関数を見つけることができませんでした。

答えて

2

最初にviewDidLayoutSubviewsが実行されると、falseになるブール値を定義します。私はこれを何度もやったが、うまくいく。

fileprivate var firstLayoutSubviewsTime = true 

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

     [...] 
    } 
} 
+0

私はちょうどそれを示唆していました。 (投票された) –

+0

それは私が今やっていることですが、私はおそらくより良い、よりクリーンな解決策を考えました – BeatzCraft

関連する問題