【发布时间】:2019-11-07 12:38:14
【问题描述】:
因为他们没有共同的祖先。约束或其锚点是否引用不同视图层次结构中的项目?
override func viewDidLoad() {
super.viewDidLoad()
let myContainer = UIView()
myContainer.backgroundColor = .purple
myContainer.translatesAutoresizingMaskIntoConstraints = false
myContainer.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
myContainer.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
myContainer.widthAnchor.constraint(equalToConstant: 200).isActive = true
myContainer.heightAnchor.constraint(equalToConstant: 200).isActive = true
self.view.addSubview(myContainer)
}
错误:
2019-11-06 20:06:17.763701-0600 测试 AutoLayout[42202:4013241] *** 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“无法使用锚点激活约束,因为它们没有共同点祖先。约束或其锚点是否引用不同视图层次结构中的项目?这是非法的。'
如果我评论以下两行,错误就会消失,myContainer 视图会显示在左上角。
//myContainer.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
//myContainer.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
如果我只有“myContainer”,知道为什么会出现错误吗?
【问题讨论】:
-
附注。这是激活约束hackingwithswift.com/example-code/uikit/…的更好方法。
标签: ios swift autolayout