2011-12-13 37 views
2

我有一个表视图,它可能显示数百个图像缩略图。我遇到的问题是快速滚动时的滞后。Lazy在UITableView中加载LOCAL图像

我见过很多关于延迟加载远程图像的教程,但没有用于本地图像的教程。

有没有人有任何建议或例子,我可以如何提高用户界面的速度与加载许多图像。

感谢

丹恩

+0

请参阅本http://www.icodeblog.com/2010/03/04/iphone-coding-turbo-charging-your-apps-with-nsoperation/这并不特别是要满足的图像,但解释如何执行任务在后台。 –

回答

5

当你有远程图像通常你安排一个异步网络调用,需要时间来完成,这通常不具备令人耳目一新的表视图由于该网络的影响作业是在一个单独的线程上完成的(除非你排队几百个网络调用,这将减慢整个系统!) 当你使用本地图像时,通常你会直接在表视图数据源

tableView:cellForRowAtIndexPath:
中从文件系统加载图像一旦需要显示一个新的单元格,就由该表执行。因此,在本地存储图像时,您很想尝试在主线程中立即加载图像,这会导致滚动问题。

但UITableView的是一个UIScrollView子类,然后将其响应UIScrollViewDelegate消息check this stackoverflow answer。因此,通过适当监控这些方法(例如加速/减速和拖动方法),您可以微调图像加载。这意味着当表格全速滚动时,不建议加载任何图像,但表格尽快不滚动,或正在减速,或者只是拖动(触摸),您可以尝试加载图像。通常情况下,关键事件是用户结束拖动并且滚动速度达到其最大速度时(对此有一个委托方法)。您应该仔细研究和理解这些方法,因为它们允许您仔细跟踪滚动事件,并根据它们进行实验并对图像加载进行微调。

另一项建议是,一旦从文件系统加载您缓存图像(使用系统缓存或你的一些缓存;!在这种情况下,要注意与记忆警告)。一旦出现内存警告,您将能够释放此缓存,因为所有图像已被表格视图单元保留。

相关问题