我有一个UITableView
,其中填充了自定义单元格(继承自UITableViewCell
),每个单元格都包含一个UIWebView
,该UITableView
会根据其内容自动调整大小。事情是这样的,我如何根据其内容更改webView
单元格的高度(UIWebViews
变量)。
解决方案必须是动态的,因为用于填充UITableView
的HTML是从不断变化的Feed中解析出来的。
我有一种感觉,我需要使用heightForRowAtIndexPath
委托(delegate)方法cellForRowAtIndexPath
,但是从它的定义来看:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
;//This needs to be variable
}
我无法访问该单元格或其内容。我可以在ojit_code中更改单元格的高度吗?
任何帮助将是巨大的。谢谢。
笔记
我在2年前问过这个问题。通过自动布局介绍,可以找到适用于iOS7的最佳解决方案:
Using Auto Layout in UITableView for dynamic cell layouts & variable row heights
在iOS8上,此功能内置在SDK中
最佳答案
我发现动态高度的最佳方法是预先计算高度,并将其存储在某种类型的集合中(可能是数组)。假设单元格主要包含文本,则可以使用-[NSString sizeWithFont:constrainedToSize:lineBreakMode:]
计算高度,然后返回heightForRowAtIndexPath:
中的相应值
如果内容不断变化,则可以实现一种方法,该方法在提供新数据时会更新高度数组。