相当于只调用一次的“viewDidLayoutSubviews”?

Bea*_*aft 3 ios swift swift3

我正在寻找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
}
Run Code Online (Sandbox Code Playgroud)

我需要这样做一次,这样我就可以在viewDidAppear. 这一切都很好,直到我将视图拆分为不同的子视图,现在该函数被多次调用。我找不到任何仅被调用一次的等效函数。

Tam*_*gel 6

定义一个布尔值,false第一次viewDidLayoutSubviews执行。我做了很多次,效果很好。

fileprivate var firstLayoutSubviewsTime = true

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

        [...]
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 好的,这也是我现在正在做的事情,但我认为可能有更好更清洁的解决方案 (8认同)