我正在为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元素。
那么我需要用什么功能来完成我的任务。
答案 0 :(得分:1)
您需要确保您的Storyboard原型单元格从上到下NSLayoutConstraints
。根据{{1}}中设置的内容计算该单元格的最终渲染高度,动态单元格大小可以压缩您对其最大压缩的任何布局约束。它非常方便,但也意味着您需要小心正确设置约束。
如果要以编程方式添加任何子视图,则需要确保相同的经验法则是正确的 - 从单元格的contentView顶部到底部有一组完整的,确定的约束。此外,您需要将代码cellForRowAtIndexPath
属性中添加的任何子视图设置为translatesAutoResizingMaskIntoConstraints
。