自swift5起,我得到了一个令我非常困惑的警告...
当我的视图中有可以修改的约束时,通常如下所示:
class myView: UIView {
let titleLabel = UILabel()
let descriptionLabel = UILabel()
var titlePaddingConstraint: NSLayoutConstraint!
func setupConstraints() {
self.titlePaddingConstraint = self.titleLabel.bottomAnchor.constraint(equalTo: self.descriptionLabel.topAnchor, constant: -20)
NSLayoutConstraint.activate([
self.titlePaddingConstraint //warning here
])
}
}
XCode最后一行第四行抱怨:
从'NSLayoutConstraint?'隐式强制了表达式?到“任何”
要使其关闭,必须添加“ bang运算符(!)”以将其解包。为什么现在需要? titlePaddingConstraint
在声明时被强制展开。这不是要完全避免对该对象进行包装吗?
答案 0 :(得分:0)
实际上,activate
方法接受一个NSLayoutContstraints
数组,您在其中犯错。将您的班级更新为
class MyView: UIView {
let titleLabel = UILabel()
let descriptionLabel = UILabel()
var titlePaddingConstraint: NSLayoutConstraint!
func setupConstraints() {
self.titlePaddingConstraint = self.titleLabel.bottomAnchor.constraint(equalTo: self.descriptionLabel.topAnchor, constant: -20)
NSLayoutConstraint.activate([self.titlePaddingConstraint])
}
}