相当于" viewDidLayoutSubviews"那只被叫一次?

时间:2017-09-13 12:41:36

标签: 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
}

我需要这样做一次,这样我就可以在viewDidAppear时用动画移动它。这一切都很有效,直到我将View拆分为不同的子视图,现在该函数被多次调用。我找不到任何只调用一次的等效函数。

1 个答案:

答案 0 :(得分:4)

定义第一次false执行时转为viewDidLayoutSubviews的布尔值。我这样做了很多次,效果很好。

fileprivate var firstLayoutSubviewsTime = true

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

        [...]
    }
}