自动布局再次让我摸不着头脑。我在类的顶部定义了一个 UIView 和 UITextField:
var urlField = UITextField(frame: .zero)
var barView = UIView(frame: .zero)
我从 viewWillAppear 调用我的配置方法(所以我知道 self.view 已全部设置):
override func viewWillAppear(_ animated: Bool) {
configureURLBar()
}
我在那里没有做任何特别的事情。
func configureURLBar() {
barView.translatesAutoresizingMaskIntoConstraints = false
barView.topAnchor.constraint(equalTo: self.view.layoutMarginsGuide.topAnchor).isActive = true
barView.heightAnchor.constraint(equalToConstant: 30).isActive = true
}
当它到达 topAnchor 约束时,我得到异常,我不明白为什么。如果我反转第 2 和第 3 行,它在到达 .topAnchor 行之前不会爆炸,所以这就是问题所在。一旦我理解了这个异常的原因(以防你想知道我想做什么),我可以问第二个问题:如何在我的 UIWebView 的顶部添加一个用户输入 (url) 栏。 (这也不起作用 - 如果我尝试限制显示完美的 self.webView,结果相同)另外:我在调用 viewWillAppear() 之前调用 self.view.setNeedsDisplay()。
最佳答案
您必须先将您的 View 添加到父 View 。之后,您可以添加约束。
试试这个:
override func viewWillAppear(_ animated: Bool)
{
self.view.addSubview(barView)
configureURLBar()
}
关于swift - 向 uiview 添加约束时的 SIGABRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42856610/