iOS 10:NSInvalidLayoutConstraintException:约束不正确地关联不兼容类型的锚点

iOS 10: NSInvalidLayoutConstraintException: Constraint improperly relates anchors of incompatible types

更新到 iOS 10 后,我在我的一个应用程序上遇到了一堆这个错误

NSInvalidLayoutConstraintException: Constraint improperly relates anchors of incompatible types:

<NSLayoutConstraint:0x170495270 UIView:0x1010e1d90.top == AppName.OtherView:0x1010dc6f0.centerX (active)>

我以前从未遇到过使用这样的约束的问题,我只在我的 iOS 10 台设备上遇到过。有什么想法吗?

你可能正在做这样的事情:

NSLayoutConstraint(item: viewA, attribute:
                .leading , relatedBy: .equal, toItem: parentView, attribute: .top, multiplier: 1.0, constant: 20)

所以你不会像 .leading.top 那样将正确的锚点拼接在一起。在这种情况下,它必须是 .leading.leading.

有趣的是,这不是 iOS9 的问题。

只需使用重置建议的约束, 它将修复缺少的约束