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