使用iOS 8管理UITableviewCell的动态高度

时间:2014-11-14 14:00:36

标签: ios uitableview ios8 autolayout

我正在为iOS 8中的UITableViewCell尝试动态高度的autoLayout功能,我关注了这个博客http://www.appcoda.com/self-sizing-cells/。所以在这里他们提到从iOS 8管理动态高度是无忧无虑的。(在链接中他们使用swift,但我使用的是目标C)

现在从xib执行autolayout之后,我们需要在viewDidLoad中编写这行代码

- (void)viewDidLoad
{
    m_tableView.estimatedRowHeight = 83.0f;
    m_tableView.rowHeight = UITableViewAutomaticDimension;
}

这很好,我的tableView高度根据内容动态变化。

我想知道如何对UITableViewCell高度进行更多控制。

1)在我的应用程序中,我希望单元格高度基于内容(数据),但我需要一个默认高度,如果内容高度小于默认高度,将应用该高度。

2)我想在向用户显示之前知道单元格的最终高度是什么,因为我想在每个单元格下面添加一些UI元素。

那么我需要用什么功能来完成我的任务。

1 个答案:

答案 0 :(得分:1)

您需要确保您的Storyboard原型单元格从上到下NSLayoutConstraints。根据{{​​1}}中设置的内容计算该单元格的最终渲染高度,动态单元格大小可以压缩您对其最大压缩的任何布局约束。它非常方便,但也意味着您需要小心正确设置约束。

如果要以编程方式添加任何子视图,则需要确保相同的经验法则是正确的 - 从单元格的contentView顶部到底部有一组完整的,确定的约束。此外,您需要将代码cellForRowAtIndexPath属性中添加的任何子视图设置为translatesAutoResizingMaskIntoConstraints