我有一个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:中的相应值

如果内容不断变化,则可以实现一种方法,该方法在提供新数据时会更新高度数组。

10-08 08:26
查看更多