添加披露指标时ios8单元格约束中断

Lee*_*sen 24 objective-c uitableview ios ios8

我在IOS8上有自动布局的问题,我可以重新创建的最简单的情况是一个简单的tableView.我设置了一个静态单元格,然后只需添加一个标签.

我的目标是让标签在很大程度上填满空间,所以我对标签有三个限制......

  1. 在superview中垂直居中(我认为这很好)
  2. 将标签尾随边距设置为30(相对于superview)
  3. 将标签前导边距设置为30(相对于superview)

这一切都非常好,完美无缺,没有重大问题或警告(它确实警告零高度,但我不认为这个问题太多了)

现在......如果我添加一个披露指标,它就会崩溃.它看起来还不错,但我得到以下内容:

2014-10-30 15:51:46.358 ContraintIssue[25572:1586028] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. 
Try this: 
(1) look at each constraint and try to figure out which you don't expect; 
(2) find the code that added the unwanted constraint or constraints and fix it. 
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, 
refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x7fd3f3d23390 UITableViewCellContentView:0x7fd3f3d226f0.trailingMargin == UILabel:0x7fd3f3d227e0'Label'.trailing + 30>",
    "<NSLayoutConstraint:0x7fd3f3d235f0 UILabel:0x7fd3f3d227e0'Label'.leading == UITableViewCellContentView:0x7fd3f3d226f0.leadingMargin + 30>",
    "<NSLayoutConstraint:0x7fd3f53b73b0 'fittingSizeHTarget' H:[UITableViewCellContentView:0x7fd3f3d226f0(38)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7fd3f3d23390 UITableViewCellContentView:0x7fd3f3d226f0.trailingMargin == UILabel:0x7fd3f3d227e0'Label'.trailing + 30>
Run Code Online (Sandbox Code Playgroud)

我不明白为什么添加一个指标会导致这样的问题,这与数字的规模无关,我已经进行了相当多的实验.

有任何想法吗?

真实世界示例具有标签(标签)的单元格,然后是包含可以通过遵循公开内容设置的值的另一标签或文本视图.因此第一个标签是固定大小,第二个标签理想情况下需要是最大标签,但如果需要则截断文本.

(请参阅添加联系人中的'铃声'或'振动设置'以获取我正在尝试实现的示例)

非常感谢,

李.

小智 49

我刚遇到同样的问题.我想在左侧布置一个带有标签的图像视图,该标签填充图像视图和超视图的右边(或尾部)边界之间的空间(这是单元格的内容视图).附件视图也设置为披露指标.在你的情况下,冲突的约束,其中所有基于H和我在日志中找到的一个fittingSizeHTarget.我没有发现这意味着什么,也没有发现它的来源,但我在这里发现了你的帖子.

以下为我做了诀窍:

降低标签的trailing-superview约束的优先级.(我选择了990).

我假设,布局系统(公开指示器可见)由于某种原因不能再满足所有约束,所以它打破了一个.但是如果降低优先级,它仍然会尝试满足约束,但不会破坏它,因为冲突约束具有更高的优先级.

希望这也解决了你的问题.

  • 在这种情况下,它所做的只是打破无论如何都会打破的约束。您可以通过告诉它如果不能满足所有条件就可以打破约束来抑制错误。如果这是正确的结果,那么您根本不需要约束 (2认同)