我想为 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) 的大小不应满足所有约束。
有任何想法吗?