可以初始化约束的推荐 UIViewController 覆盖方法是什么?

Which is the recommended UIViewController override method where constraints can be initialised?

我正在以编程方式创建 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()?

在你的约束设置函数中,记得调用, scrollView.translatesAutoResizingMaskIntoConstraints = false。 在你做了 view.addSubview(scrollView) 之后,你可以调用你的约束函数。

但是是的,如果你想让它们以后改变,你应该在 viewDidLayoutSubviews() 中设置它。

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

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

您可以在 initUI() 结束时调用 initConstraints(),也可以在调用 initUI() 之后调用 initConstraints()