建议使用哪种UIViewController覆盖方法来初始化约束?

时间:2019-05-25 11:34:55

标签: ios swift nslayoutconstraint

我正在以编程方式创建UI。我正在初始化UI并将其添加为loadView()方法中的子视图。我将方法分类为:

initUI()
initConstraints()
initStyle()

我正在寻找一种正确的覆盖方法,可以将这些方法分别放在UIViewController中。

override func loadView() {
    super.loadView()
    initUI()
}

func initUI() {
    view = UI.view(frame: UIScreen.main.bounds)
    view.addSubview(scrollView)
}

func initConstraints() {  // Where to place this?
    NSLayoutConstraint.activate([]) // ..
}

initConstraints()放在哪里?

2 个答案:

答案 0 :(得分:2)

重要的是,在创建约束之前,已将受约束控制的视图添加到视图层次结构中。

如果要在initConstraints()中创建和激活约束,则应在将视图添加到视图层次结构中后立即调用它,该过程在loadView()viewDidLoad()中完成。

您可以在initConstraints()结束时或在致电initUI()之后致电initUI()

答案 1 :(得分:1)

在约束设置功能中,请记住调用, scrollView.translatesAutoResizingMaskIntoConstraints = false。 完成view.addSubview(scrollView)之后,您可以调用约束函数。

但是可以,如果您以后想要更改它们,则应在viewDidLayoutSubviews()中进行设置。