我正在制作一个自定义键盘,我有一个名为 setButtonConstraints()的函数。当我将此函数插入 viewDidLoad()并运行我的应用程序时,约束已正确设置。但是,当我将函数调用移动到覆盖func updateViewConstraints()(应该在子视图布局后调用)时,不会设置任何约束。这是什么原因?
这就是简单的updateViewConstraints():
override func updateViewConstraints() {
super.updateViewConstraints()
// Add custom view sizing constraints here
setButtonConstraints()
}
答案 0 :(得分:3)
根据Apple的文档,只有在需要更新约束时才会调用updateViewConstraints()
。此外,我认为您需要在更改约束后调用{/ 1}} 。
以下链接很有帮助。
Where should I be setting autolayout constraints when creating views programmatically
答案 1 :(得分:0)
将您的约束代码放在updateViewConstraints中,并从viewWillAppear中调用它。也可以响应旋转调用相同的方法。接受的答案在两点都不正确。在方法的任何地方调用super。如果要更新约束,请调用setNeedsUpdateConstraints,它将有效地处理它。
来自文档
您可以在子类中重写此方法以添加约束 到视图或其子视图。如果你覆盖这个方法,你的 实现必须调用super的实现。
here。