Mat*_*era 13 iphone ios autolayout nslayoutconstraint
我有一个TableView,我使用委托方法指定每个单元格的高度tableView:heightForRowAtIndexPath:.
当我旋转视图时,我得到了这个我不太明白的错误.
它不能满足下面的约束并打破它继续.
"<_UIScrollViewAutomaticContentSizeConstraint:0x8e8d040 UITableView:0x9423400.contentHeight{id: 213} == -1568.000000>"
Run Code Online (Sandbox Code Playgroud)
有谁知道发生了什么以及为什么我打破了这个限制?
Ric*_*ble 21
更新:此问题在iOS 8中不再相关,iOS 8增加了对自定义单元格的支持.但它仍然适用于iOS 7.
原始答案(iOS 7):
Greg的答案肯定对我有用 - 我需要调试我的tableView:estimatedHeightForRowAtIndexPath:方法.我做了一些调试和一些快速实验,这里有一些我学到的东西:
不要在估计的行方法中使用UITableViewAutomaticDimension.此常量用于页眉和页脚方法.当我阅读文档时,我想我没有给予足够的重视:) 更新:UITableViewAutomaticDimension现在可以用于iOS 8中的行高,这是自定义单元格功能的一部分.
估计行高为1.0会导致异常:"NSInternalInconsistencyException",原因:'表视图行高不得为负...'"估计小于1.0也会产生奇怪的结果.
估计2.0和实际工作之间没有任何例外(尽管2.0可能是出于优化原因的不好选择 - 你希望尽可能接近实际).
约束异常仅在估计的行高大于实际行高时发生.越接近实际,异常发生的可能性就越小.在获得异常之前,您的估计距离似乎与几个不同因素有关:实际行高,行的位置等.
gre*_*reg 12
tl; dr:寻找与您估计的实际高度值完全不同的实际高度值.或者是负数或实际值.0
我只花了几分钟调试这个约束异常.我有一个UITableView单元格,节标题和节页脚.其中每个都estimatedHeightFor定义了iOS 7 消息,返回一个static const值.我一次删除了一个单元格,页眉和页脚,直到我确定问题来自页脚(如果你没有页脚,请不要重要,请继续阅读).
如果我消除了estimatedHeightForFooterInSection:,那个例外就消失了.在我看来heightForFooterInSection:,有一条路径,其中页脚的高度0.当我恢复estimatedHeight消息并消除实际高度的代码路径时0,异常也消失了.在异常重新出现之前,我将此值替换为12 0,22并将此值一直降低到12.
无论如何,我需要的页脚的高度是0(我返回nil从viewForFooterInSection:在这种情况下),我希望能够估计高度(我支持动态文本).我的解决方案是考虑代码路径,这将给我一个0高度estimatedHeightForFooterInSection:.一旦我添加了,那个例外就消失了.
小智 1
尝试调试你的
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
执行。就我而言,它在某些罕见的情况下返回负整数,导致消息显示在我的日志中并扰乱我的表视图的滚动行为。
| 归档时间: |
|
| 查看次数: |
5605 次 |
| 最近记录: |