【问题标题】:Dynamic UITableViewCell height with lazy loading of images in cell动态 UITableViewCell 高度,延迟加载单元格中的图像
【发布时间】:2011-06-28 07:12:50
【问题描述】:

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

问题是如果没有下载,我没有图像宽度和高度。那么如何根据该单元格中的图像设置单元格高度?我用谷歌搜索了很多。延迟加载示例仅显示固定大小的图像。请帮助我..谢谢。

【问题讨论】:

  • 你找到答案了吗?

标签: iphone objective-c uitableview lazy-loading


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    并相应地调整高度,您还需要修复要显示图像的 imageView 的大小。没必要把它变大或变小。使其固定(假设40 * 40)。 然后你就可以调整你的单元格了。

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

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

    【讨论】:

      【解决方案3】:

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

      LazyTableImages

      来自 Apple 文档。

      此示例演示了一个多阶段 加载和显示的方法 界面视图。它首先加载 来自 RSS 提要的相关文本,因此 表可以尽快加载, 然后为每个下载图像 异步行,所以 UI 更多 反应灵敏。

      【讨论】:

      • 但在“LazyTableImages”中,所有图像的高度都相同。因此单元格也具有相同的高度。在我的情况下,图像的大小不同..
      • 无论何时下载并准备绘制图像,您都可以在您的tableView 上调用reloadData,您需要在heightForCellAtIndexPath 函数中计算单元格的高度。 但是它会降低桌子的性能。
      • 投反对票,因为答案基于一个示例,该示例未解决用户关于动态高度的问题。
      猜你喜欢
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      相关资源
      最近更新 更多