无法激活约束
Unable to Activate Constraints
我收到错误..
Terminating app due to uncaught exception 'NSGenericException',
reason: 'Unable to activate constraint with anchors because
they have no common ancestor. Does the constraint or its anchors
reference items in different view hierarchies? That's illegal.'
我参考了其他答案,解决方案一直是在以编程方式激活约束之前在 viewDidLoad 中添加子视图。
我仍然收到同样的崩溃,但不明白是什么原因造成的。任何指导将不胜感激。以下是相关代码:
@IBOutlet weak var activityIndicatorView: UIView!
@IBOutlet weak var refreshActivityIndicatorView: UIView!
let activityIndicator = AnimationView(name: "name")
let refreshActivityIndicator = AnimationView(name: "name")
override func viewDidLoad() {
super.viewDidLoad()
activityIndicatorView.addSubview(activityIndicator)
activityIndicator.translatesAutoresizingMaskIntoConstraints = false
refreshActivityIndicatorView.addSubview(activityIndicator)
refreshActivityIndicator.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
activityIndicator.centerXAnchor.constraint(equalTo: activityIndicatorView.centerXAnchor),
activityIndicator.centerYAnchor.constraint(equalTo: activityIndicatorView.centerYAnchor),
activityIndicator.widthAnchor.constraint(equalToConstant: activityIndicatorView.frame.width),
activityIndicator.heightAnchor.constraint(equalToConstant: activityIndicatorView.frame.height),
refreshActivityIndicator.centerXAnchor.constraint(equalTo: refreshActivityIndicatorView.centerXAnchor),
refreshActivityIndicator.centerYAnchor.constraint(equalTo: refreshActivityIndicatorView.centerYAnchor),
refreshActivityIndicator.widthAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.width),
refreshActivityIndicator.heightAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.height)
])
}
替换
refreshActivityIndicatorView.addSubview(activityIndicator)
和
refreshActivityIndicatorView.addSubview(refreshActivityIndicator)
崩溃的原因
refreshActivityIndicator.centerXAnchor.constraint(equalTo: refreshActivityIndicatorView.centerXAnchor),
refreshActivityIndicator.centerYAnchor.constraint(equalTo: refreshActivityIndicatorView.centerYAnchor),
refreshActivityIndicator.widthAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.width),
refreshActivityIndicator.heightAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.height)
您在 refreshActivityIndicatorView
和 refreshActivityIndicator
之间设置了约束,而 refreshActivityIndicator
未添加为子视图
我收到错误..
Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to activate constraint with anchors because they have no common ancestor. Does the constraint or its anchors reference items in different view hierarchies? That's illegal.'
我参考了其他答案,解决方案一直是在以编程方式激活约束之前在 viewDidLoad 中添加子视图。
我仍然收到同样的崩溃,但不明白是什么原因造成的。任何指导将不胜感激。以下是相关代码:
@IBOutlet weak var activityIndicatorView: UIView!
@IBOutlet weak var refreshActivityIndicatorView: UIView!
let activityIndicator = AnimationView(name: "name")
let refreshActivityIndicator = AnimationView(name: "name")
override func viewDidLoad() {
super.viewDidLoad()
activityIndicatorView.addSubview(activityIndicator)
activityIndicator.translatesAutoresizingMaskIntoConstraints = false
refreshActivityIndicatorView.addSubview(activityIndicator)
refreshActivityIndicator.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
activityIndicator.centerXAnchor.constraint(equalTo: activityIndicatorView.centerXAnchor),
activityIndicator.centerYAnchor.constraint(equalTo: activityIndicatorView.centerYAnchor),
activityIndicator.widthAnchor.constraint(equalToConstant: activityIndicatorView.frame.width),
activityIndicator.heightAnchor.constraint(equalToConstant: activityIndicatorView.frame.height),
refreshActivityIndicator.centerXAnchor.constraint(equalTo: refreshActivityIndicatorView.centerXAnchor),
refreshActivityIndicator.centerYAnchor.constraint(equalTo: refreshActivityIndicatorView.centerYAnchor),
refreshActivityIndicator.widthAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.width),
refreshActivityIndicator.heightAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.height)
])
}
替换
refreshActivityIndicatorView.addSubview(activityIndicator)
和
refreshActivityIndicatorView.addSubview(refreshActivityIndicator)
崩溃的原因
refreshActivityIndicator.centerXAnchor.constraint(equalTo: refreshActivityIndicatorView.centerXAnchor),
refreshActivityIndicator.centerYAnchor.constraint(equalTo: refreshActivityIndicatorView.centerYAnchor),
refreshActivityIndicator.widthAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.width),
refreshActivityIndicator.heightAnchor.constraint(equalToConstant: refreshActivityIndicatorView.frame.height)
您在 refreshActivityIndicatorView
和 refreshActivityIndicator
之间设置了约束,而 refreshActivityIndicator
未添加为子视图