无法将 'UILabel' 类型的值转换为预期的参数类型 '[String : Any]'



我无法让我的名字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)

相关内容

最新更新