XCode"无法解析约束格式"在iOS 11上

时间:2017-12-14 19:39:25

标签: ios swift constraints

完整错误:

  

*由于未捕获的异常终止应用' 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 += "|"

为什么会这样?

1 个答案:

答案 0 :(得分:2)

indexes为空,因此循环永远不会运行,您最终会使用V:||的布局字符串。这不合法,因为它没有引用任何命名视图,因此|字符也不能映射到视图。