UITableView Lazy Image Load,表格停止滚动后出现图像

Posted

技术标签:

【中文标题】UITableView Lazy Image Load,表格停止滚动后出现图像【英文标题】:UITableView Lazy Image Load, images appear after table STOPS scrolling 【发布时间】:2009-12-31 10:33:21 【问题描述】:

我使用 NSUrlConnection 为我的 UITableView 实现了延迟图像加载。这一切都很好。当我打开我的桌子时,我会在等待一秒钟(在 3G 上)时自动获取图像。但是,当我滚动时,表格会加载新单元格,启动 NSURLConnections,但是当图像完成加载(在代码中)时,它们不会被放入视图中,直到表格实际停止滚动..

Youtube 应用程序能够在滚动时将图像加载到表格中,我也想这样做,有什么提示/指针吗?

【问题讨论】:

我也想听听这个问题的答案。顺便说一句,您是否将每个图像加载到单独的线程上?如果我滚动到快速,我会崩溃,有什么想法吗? 我不使用线程(至少,不明确),我使用异步工作的 NSURLConnection initWithRequest:delegate.. 【参考方案1】:

感谢右侧的“相关”功能,我刚刚找到了答案。Delayed UIImageView Rendering in UITableView

您必须在不同的运行循环中启动 NSUrlConnection,以便在表格滚动时接收数据。

感谢您的回答!

【讨论】:

【参考方案2】:

看看苹果的例子LazyTableImages。

如果您异步请求表格的所有图像,它们将在到达时加载。

您会注意到一些应用程序等待scrollViewDidEndDraggingloadImagesForOnscreenRows 真正变得懒惰,并且只请求用户当前正在检查的行的图像。

【讨论】:

实际上这个例子比我的更糟糕,因为它只在表格停止滚动时启动线程来加载图像(即使它进入视图时也不行)。不过,我会看看它们是如何进行线程处理的。我当前的应用程序会在它们进入时加载行,并在滚动图像时停止它们。唯一的问题是在表格停止滚动之前它们不会插入表格中,我不知道为什么。我认为即使我的图像加载是异步发生的,它实际上并不是在单独的线程中,因此它会等待表格停止滚动。 确实如此,但我发现样本做得非常好。我通过细微的调整让它工作得很好。

以上是关于UITableView Lazy Image Load,表格停止滚动后出现图像的主要内容,如果未能解决你的问题,请参考以下文章

图片懒加载高性能实现(IntersectionObserver方法)

iOS如何固定UITableView中cell.imageView.image的图片大小

Eager thick vs Lazy thick disk performance

一个轻量级、快速、功能丰富、功能强大且高度可配置的jQuery&;泽普托。

[IOS开发教程] iOS如何固定UITableView中cell.imageView.image的图片大小

如果宽度和高度不同,如何在 UITableView 中将 UITableViewCell Image 更改为 Circle