UITableViewCell - 如何处理来自Nib的动态大小的内容视图

时间:2012-05-03 14:42:21

标签: ios uikit uitableview

当我想要一个自定义单元格时,我通常会在单元格的内容视图中添加一个UIView子类。对于我的子视图的布局,我使用笔尖。然后我将笔尖连接到我的UIView子类。我的问题是如何动态调整内容大小。假设我的观点里面有很多UILabels。我使用layoutSubviews来定位所有子视图 - 但只有在完成之后我才真正知道我的单元格的高度。所以目前在tableView:heightForRowAtIndexPath我设置了我的子视图并致电layoutIfNeeded以便一切正确定位。现在我知道我的单元格的高度并以tableView:heightForRowAtIndexPath方法返回它。但是现在当调用tableView:cellForRowAtIndexPath时,我被赋予的单元格的高度为44.0。当我将子视图添加到它时 - 我的子视图超出了它的父级界限。然后,当稍后在iOS中将单元格调整到我所说的所需高度时,我的内容因我的autoresizingMask而被抛弃。只是试图弄清楚这是否是其他人处理的问题,或者我是否接近完全错误。我们要求高度似乎倒退,然后创建一个不是那个高度的单元格。

1 个答案:

答案 0 :(得分:2)

不幸的是,这就是UITableViews的工作原理:您需要在实际呈现UITableViewCell之前提供高度。 是的,每个人都必须处理它。 :)

您可以创建NSArray,添加所有自定义内容视图,根据预期的contentView边界设置其frame,然后将此数组用作tableView:heightForRowAtIndexPath:tableView:cellForRowAtIndexPath:中的数据源。虽然这不是很有效,但它适用于小型数据集。

此外,这是一个很好的教程,主题如下: UITableViewCell Dynamic Height (by Matt Long)

关于SO的类似问题: How can I do variable height table cells on the iPhone properly?