动态UITableViewCell高度,在单元格中延迟加载图像

时间:2011-06-28 07:12:50

标签: iphone objective-c uitableview lazy-loading

我有一个显示Facebook新闻源的UITableview。每个新闻Feed中都有一些不同大小的图片。所以我必须懒洋洋地加载这些图像,同时,我必须根据图像高度设置单元格高度(在调用heightForrowAtIndexPath时不加载)。

问题是我没有下载图像的宽度和高度。那么如何根据该单元格中的图像设置单元格高度?我google了很多。懒惰的加载示例只显示固定大小的图像。请帮助我...谢谢adavence。

3 个答案:

答案 0 :(得分:1)

在下载之前,您无法知道图像的大小。 如果下载了图像,您可以查看heightForCellAtIndexPath。 然后设置正确的高度,下载图片后,只需在表格视图上调用beginUpdateendUpdate

答案 1 :(得分:1)

您需要在后台线程中加载图像,最初不显示任何图像然后从后台加载这些图像的速度与加载图像一样快,从背景重新加载表格然后设置一个bool变量来识别图像被加载。

并相应地调整高度,您还需要修改imageView的大小,以便显示图像。无需做大或小。使它固定(假设40 * 40)。 然后你可以调整你的细胞。

要从背景重新加载表格,请在后台选择器中使用此行代码

[self.yourTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

答案 2 :(得分:0)

在下面找到非常好的苹果官方示例。

LazyTableImages

来自Apple doc。

  

此示例演示了一个多阶段   加载和显示的方法   UITableView的。它首先加载   来自RSS feed的相关文本所以   表可以尽快加载,   然后下载每个图像   异步行,所以UI更多   响应。