不通过updateViewConstraints添加约束

时间:2014-08-17 19:26:17

标签: ios swift constraints viewdidload

我正在制作一个自定义键盘,我有一个名为 setButtonConstraints()的函数。当我将此函数插入​​ viewDidLoad()并运行我的应用程序时,约束已正确设置。但是,当我将函数调用移动到覆盖func updateViewConstraints()(应该在子视图布局后调用)时,不会设置任何约束。这是什么原因?

这就是简单的updateViewConstraints():

 override func updateViewConstraints() {
    super.updateViewConstraints()

    // Add custom view sizing constraints here
    setButtonConstraints()

}

2 个答案:

答案 0 :(得分:3)

根据Apple的文档,只有在需要更新约束时才会调用updateViewConstraints()。此外,我认为您需要在更改约束后调用{/ 1}}

以下链接很有帮助。

Where should I be setting autolayout constraints when creating views programmatically

答案 1 :(得分:0)

将您的约束代码放在updateViewConstraints中,并从viewWillAppear中调用它。也可以响应旋转调用相同的方法。接受的答案在两点都不正确。在方法的任何地方调用super。如果要更新约束,请调用setNeedsUpdateConstraints,它将有效地处理它。

来自文档

  

您可以在子类中重写此方法以添加约束   到视图或其子视图。如果你覆盖这个方法,你的   实现必须调用super的实现。

here