我无法让我的名字Lbl转换。
override func setupViews() {
super.setupViews()
addSubview(nameLbl)
addConstraints([NSLayoutConstraint.constraints(withVisualFormat: "H:|[v0]|", options: [], metrics: nil, views: nameLbl)])
}
}
视图需要字典而不是视图。您需要像这样使用字典(在您的情况下(:
let views: [String: Any] = ["v0": nameLbl]
他们:
addConstraints([NSLayoutConstraint.constraints(withVisualFormat: "H:|[v0]|", options: [], metrics: nil, views: views)])
函数 constraints(withVisualFormat:options:metrics:views:)
采用 [String:Any]
类型的字典作为views
参数。您已在约束字符串中v0
命名标签,因此应使用
let constraints = NSLayoutConstraint.constraints(
withVisualFormat: "H:|[v0]|",
options: [],
metrics: nil,
views: ["v0" : nameLbl])
addConstraints(constraints)
(请注意,函数 constraints(withVisualFormat:options:metrics:views:)
返回一个约束数组,因此您无需将其括在大括号中。如果你把它括在大括号里,你将有一个包含约束数组的数组,这不是你想要的。
问题就在这里
views: nameLbl
你必须传递一个字典 -> [String:Any]
作为参数而不是错误状态的UILabel
views:[String:Any]
//
正确的语法是这样的
let views: [String: UILabel] = ["nameLbl": nameLbl]
NSLayoutConstraint.constraints(withVisualFormat: "H:|[nameLbl(150)]|", options: [], metrics: nil, views: views)