我正在以编程方式创建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()
放在哪里?
答案 0 :(得分:2)
重要的是,在创建约束之前,已将受约束控制的视图添加到视图层次结构中。
如果要在initConstraints()
中创建和激活约束,则应在将视图添加到视图层次结构中后立即调用它,该过程在loadView()
或viewDidLoad()
中完成。
您可以在initConstraints()
结束时或在致电initUI()
之后致电initUI()
。
答案 1 :(得分:1)
在约束设置功能中,请记住调用,
scrollView.translatesAutoResizingMaskIntoConstraints = false
。
完成view.addSubview(scrollView)
之后,您可以调用约束函数。
但是可以,如果您以后想要更改它们,则应在viewDidLayoutSubviews()
中进行设置。