【发布时间】:2013-07-08 16:47:13
【问题描述】:
我想为 UITableViewCells 使用自动布局。这些表格单元格具有动态高度(取决于文本长度)。
我正在使用[UIView -systemLayoutSizeFittingSize:] 计算适当的单元格高度(返回[UITableView -heightForRowAtIndexPath:]),但我不断得到以下结果:
-
如果我通过
UILayoutFittingCompressedSize,我会返回 (0,0) 的 CGSize。 -
如果我通过
UILayoutFittingExpandedSize,我的应用会因以下错误而崩溃:*** -[NSISLinearExpression incrementConstant:] 中的断言失败,/SourceCache/Foundation_Sim/Foundation-1043.1/Layout.subproj/IncrementalSimplex/NSISLinearExpression.m:620
(我的猜测是这意味着某个数字是无限的。)
我的实现很简单。我计算每个对象的高度,然后缓存它:
MessageCell *cell = // allocate a new cell...
// set up the cell (assign text, images, etc)
CGSize size = [cell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
self.cellHeight = size.height; // size always equals (0, 0)
我假设这是我设置的约束的问题,但是:
- 如果我手动将
cellHeight设置为较大的值,则单元格看起来都很好,除了高度错误。 - Interface Builder 没有给我关于模糊限制的警告
-
[cell hasAmbiguousLayout]返回NO。 - 我的单元格有一个设置为 48x48 的图像,因此 (0, 0) 的大小不应满足所有约束条件。
有什么想法吗?
【问题讨论】:
-
我遇到了和你一样的bug,你解决了吗?
标签: ios cocoa-touch uitableview interface-builder autolayout