2017-09-13 48 views
0

我正在寻找只有一次调用viewDidLayoutSubviews的替代方案。等同于仅调用一次的“viewDidLayoutSubviews”?

我使用此代码移动登录了视野:

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

我需要做一次,这样我可以将其与时viewDidAppear一个动画中移动。这一切都很好,直到我把我的视图分成不同的子视图,现在这个函数被多次调用。我找不到任何等同的功能,只能调用一次。

回答

2

定义执行viewDidLayoutSubviews时第一次变为false的布尔值。我做了很多次,工作得很好。

fileprivate var firstLayoutSubviewsTime = true 

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

     [...] 
    } 
} 
+0

我刚刚提出这个建议。 (投票) –

+0

好的,这也是我现在正在做的,但我认为可能有更好更清洁的解决方案 – BeatzCraft

相关问题