1

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

4

1 回答 1

2

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

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

另外,这里有一个关于这个主题的很好的教程: UITableViewCell Dynamic Height (by Matt Long)

关于 SO 的类似问题: 如何在 iPhone 上正确执行可变高度表格单元格?

于 2012-05-04T00:23:24.140 回答