完整错误:
*由于未捕获的异常终止应用' NSInvalidArgumentException',原因:'无法解析约束 格式:预期视图V:|| ^' * 首先抛出调用堆栈:
所以这就是故事,我正在制作适用于iOS 10和11的应用程序,一切运行良好,但我决定将Xcode更新到最新版本(9.1到9.3),现在我的应用程序在启动时崩溃了。但只有在iOS11上,它才会启动并正常运行
我设置约束的代码:
var verticalLayoutString = "V:|"
for i in 0..<indexes.count {
let label = UILabel(frame: CGRect(x: 0, y: i * 20, width: 20, height: 20))
label.text = indexes[i]
label.font = UIFont.systemFont(ofSize: 12)
label.textAlignment = .center
label.translatesAutoresizingMaskIntoConstraints = false
label.textColor = GlobalSettings.tint.color
addSubview(label)
views["label\(i)"] = label
if i == 0 {
verticalLayoutString += "[label\(i)]"
}
else {
verticalLayoutString += "[label\(i)(==label0)]"
}
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[label\(i)]|", options: NSLayoutFormatOptions.alignAllCenterY, metrics: [:], views: views))
}
verticalLayoutString += "|"
为什么会这样?
答案 0 :(得分:2)
indexes
为空,因此循环永远不会运行,您最终会使用V:||
的布局字符串。这不合法,因为它没有引用任何命名视图,因此|
字符也不能映射到视图。