翻译@Auto Layout Guide(自动布局指南)


Debugging Auto Layout(Debug自动布局)

Logical Errors(逻辑错误)

逻辑错误就是Bug,是错误认知造成的。考虑你是否能够正确理解下述概念/情况:视图frame的计算方式;各种约束效果或视图属性;复杂约束相互作用原理。总之就是实际情况和我们想象的不一样。

逻辑错误是最难定位的。面对诸多可能,利用排除法,一一过滤,剩下的就是成因,虽然结果常常出乎意料。然而,即使到了这一步,仍然难以确定到底哪里理解错了。

修复逻辑错误没有固定步骤,只能大胆假设,不断试错,定位问题的同时,尝试找到解决方法。不过,这里有一些建议可能会有所帮助:

  • 检查现有约束:是否遗漏或添加多余约束,参与约束的视图和属性是否正确;
  • 检查视图frame:是否意外拉伸或缩小;

    特别注意背景透明的视图,如标签或按钮,其形变很难察觉到。

    判断视图是否形变的准则之一是基准线对齐不再生效。这是因为基准线对齐只在视图保持固有尺寸时才有效。如果垂直方向上发生形变,则文本位置偏移。

  • 对于需要始终保持位置固有尺寸的视图,提高其外扩和内缩优先级(如999);

  • 如果怀疑对某个地方理解有误,可以通过添加约束的方式强制将其实现,进行验证;

    别忘了,布局无法满足是最容易定位和解决的错误类型。不断添加约束,直至产生冲突,最后解决冲突即可。

  • 尝试理解错误布局,推导其构成约束。一旦理解,问题也就迎刃而解;

  • 尝试其他约束策略。通常,一个布局效果可以通过多种策略实现,尝试不同策略有助于发现和解决问题。