我似乎遇到了NSLayoutConstraint
的问题。从我可以收集的内容(我希望我在这里错了),.addConstrait()
函数应该采用NSLayoutContraint
类型的变量 - 但NSLayoutConstraint.constraintsWithVisualFormat()
生成NSArray
s?
这对我没有意义。我已经尝试将NSArray
转换为NSLayoutConstraint
,但我犯了错误。当然NSLayoutConstraint.constraintsWithVisualFormat()
的输出与.addConstrait()
预期的类型相同?
如果不是为什么不呢?什么是解决这个问题的最佳方法?
以下是代码:
let swiftViews:Dictionary[String: UIView] = ["status":status]
let swiftMetrics = ["standardWidth":200]
let views:NSDictionary = swiftViews as NSDictionary
let metrics:NSDictionary = swiftMetrics as NSDictionary
let statusHorzVFLCons = NSLayoutConstraint.constraintsWithVisualFormat("|-[status]-|", options: NSLayoutFormatOptions(0), metrics: metrics, views: views)
self.view.addConstraint(statusHorzVLFCons)
最后一行产生错误:
'NSArray' is not a subtype of 'NSLayoutConstraint'
有人能指出我出错的地方。
答案 0 :(得分:3)
constraintsWithVisualFormat(_:options:metrics:views:)
返回NSArray
的{{1}}。
只需使用NSLayoutConstraint
代替addConstraints(_:)
addConstraint(_:)
答案 1 :(得分:1)
addConstraint
方法需要一个约束,但constraintsWithVisualFormat
会返回零{或}个约束的NSArray
。
尝试添加s。
[self addConstraints:/*your NSLayoutConstraint constraintsWithVisualFormat: call */];
Apple的命名约定通常可以帮助你。请注意,constraintsWithVisualFormat
是复数,addConstraint
是单数(addConstraints
是复数)。