当我尝试构建iOS应用程序时收到以下错误。我怎么知道是什么原因造成的?
错误:表达式类型'NSLayoutConstraint'不明确,没有更多上下文
代码:
private func centerIndicator() {
let xCenterConstraint = NSLayoutConstraint(
item: loadingView ?? default value, attribute: .centerX, relatedBy: .equal,
toItem: indicator, attribute: .centerX, multiplier: 1, constant: 0
)
loadingView.addConstraint(xCenterConstraint)
let yCenterConstraint = NSLayoutConstraint(
item: loadingView, attribute: .centerY, relatedBy: .equal,
toItem: indicator, attribute: .centerY, multiplier: 1, constant: 0
)
loadingView.addConstraint(yCenterConstraint)
}
答案 0 :(得分:1)
您最可能的罪魁祸首是default value
,它不应该在那里。如果loadingView
是非可选的,则可以删除?? default value
。如果是是可选的,则可能应该将其包装在if let loadingView = loadingView
块中。在随机视图上设置约束不会奏效。
接下来,Apple不建议再直接向视图添加约束。而是使用isActive
属性。
NSLayoutConstraint(
item: loadingView, attribute: .centerY, relatedBy: .equal,
toItem: indicator, attribute: .centerY, multiplier: 1, constant: 0
).isActive = true
但是这些都是非常简单的约束。更好的方法是改用布局锚。
loadingView.centerYAnchor.constraint(equalTo: indicator.centerYAnchor).isActive = true