Autolayout,如何解决这些约束错误

时间:2015-05-01 11:00:19

标签: ios uitableview autolayout

我在简单的UITableViewCell-Layout中尝试了很多来解决自动布局约束错误,但现在却陷入了困境。 TableView按预期呈现得很好,但警告很烦人,即使它看起来不错,我也不喜欢运行错误的布局。

我逐步删除了标签,看看约束错误是否会消失。只有左边的图像和图像右边的最顶部标签在没有约束错误的情况下播放得很好。但至少我添加了第二个标签并给它提供了相同的位置,就像现在" -label一样,错误再次发生。

下面我将列出约束,然后从控制台列出错误消息:

enter image description here enter image description here enter image description here enter image description here

约束错误列出了以下元素:

$(document).ready(function () {
   window.onload = LabourPrice;
    ....
  }

在我看来,没有约束加倍,每个都有自己的含义。有人能澄清一下吗?

2 个答案:

答案 0 :(得分:2)

从错误输出中,似乎在某个时刻(可能在计算正确的高度之前),单元格的高度为0

"<NSLayoutConstraint:0x7fe004ab09c0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7fe004aa7bc0(0)]>"

由于你的布局元素之间有一些正的垂直偏移(比如标签的15顶部偏移等等),布局无法满足,因为这意味着某些视图必须具有负高度,这不是可能的。

由于您的布局看起来不错,我的建议是将最后一个约束(从最后一个标签到容器视图的33个底部偏移)的优先级设置为较低的优先级(999)。这应该可以解决你的警告。

要实际找到您的单元格在某个点上的高度为0的原因,您必须查看如何计算单元格的高度(可能是自动调整大小)。如果您可以发布您在那里使用的代码,我可以尝试进一步帮助您。

让我知道它是怎么回事。祝你好运!

答案 1 :(得分:1)

您的约束声明

V的{​​p> vertical spaceH的{​​{1}}

  1. Horizontal Space顶部的垂直空间为label1
  2. 15label1的垂直空间为label2
  3. 5label2的垂直空间为label3
  4. 来自&#39; label3&#39;的垂直空间到底是33
  5. 为此引用Auto-layout: What creates constraints named UIView-Encapsulated-Layout-Width & Height?
  6. 我只是张贴一张图片...我觉得问题出在你的第一个标签上,即#34;刚才#34; ...试着检查是否有任何警告...

    enter image description here

    如果您仍遇到问题,则只需删除底部约束并向label3添加高度约束。