解除视图时发生自动布局内部错误

Uno*_*ome 6 constraints ios swift

当我解除一些我有一些限制的观点时,我得到了一个有趣的错误.

自动布局内部错误.在优化具有接近零系数的变量期间,找不到传入头AppName.ViewName:0x7fc072ed8ef0.Width {id:6805}的传出行头,这应该永远不会发生.

我在几个视图中得到了这个bug,我正在添加这些约束.此错误消息的一个变体如下:

自动布局内部错误.在优化具有接近零系数的变量期间,找不到传入头{id:6630}的传出行头,这应该永远不会发生.

有没有人遇到过类似的错误?有关如何调试它的任何提示?

Uno*_*ome 3

我仍然不是 100% 确定为什么会这样,但关键是,如果您将整数作为相等宽度或高度的约束值,那么约束系数接近于零。

例如,您不能使用 1.2 或 0.8 这样的平面值,您需要使用 0.79999 或 1.199999,否则在某些设备上会发生崩溃。

我更新了所有约束以使用 0.7999 这样的数字,并且它有效。

想要疯狂的证据吗?把它放在操场上:

let a: Double = 0.8
let b: Double = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1
print(a == b)
Run Code Online (Sandbox Code Playgroud)

操场上的结果令人震惊:

0.8 0.79999999“假”

疯狂,但这确切地说明了错误发生的原因。希望这可以帮助。