2015-12-22 48 views
5

当我忽略某些视图时出现了一些有趣的错误,这些视图对我有一些限制。视图关闭时发生自动布局内部错误

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

我收到这个错误,我添加了这些约束的几个视图。此错误消息的一个变体如下:

自动布局内部错误。 在优化 变量时,找不到输出头{{:6630})的输出行头,这个变量几乎不会发生。

有没有人遇到类似的问题,这个错误?有关如何调试它的任何提示?

+0

这是由于未满足的限制条件。您必须根据铅,线索的高度和宽度来修复该问题。有时它在4个侧面包装中完成,而其它3个侧面包裹约束满足。 –

+0

你能详细说明一下吗? “根据引线的高度和宽度来修复”。你的意思是有一个左右和顶部的约束? – Unome

+0

海看到下面的链接它澄清你有点清楚,谢谢! http://stackoverflow.com/questions/28965610/cannot-find-an-outgoing-row-head-for-incoming-head-uibutton –

回答

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) 

操场结果然后读惊人:

0.8 0.79999999 “假”

疯狂,不过这正好说明了为什么错误发生了什么。希望这可以帮助。

+0

不是疯狂的,电脑说做你所有的二进制数学,它永远不会是不准确的。看看:https://en.wikipedia.org/wiki/Machine_epsilon – EricLeaf