Dan*_*ann 2 xcode objective-c uitableview
我有一个表视图,可能显示数百个图像缩略图.我遇到的问题是快速滚动时的滞后.
我已经看到很多延迟加载远程图像的教程,但没有任何本地图像.
有没有人有任何关于如何通过加载许多图像来提高UI速度的建议或示例.
谢谢
丹恩
当您拥有远程映像时,通常会安排一个需要时间才能完成的异步网络调用,这通常不会影响表视图刷新,因为网络作业是在单独的线程上完成的(除非您排队数百个网络)调用,这会降低整个系统的速度!)当您使用本地映像时,通常直接在表视图数据源中从文件系统加载映像
tableView:cellForRowAtIndexPath:Run Code Online (Sandbox Code Playgroud)一旦需要显示新单元格,由表格执行的方法.因此,将图像存储在本地,您很想在主线程中立即加载它,这会导致滚动问题.
但UITableView是一个UIScrollView子类,然后它响应UIScrollViewDelegate消息检查此stackoverflow答案.因此,通过适当监控这些方法(例如加速/减速和拖动方法),您可以微调图像加载.这意味着虽然表格不是全速滚动,但建议不要加载任何图像,但是一旦表格没有滚动,或者表格正在减速或只是拖动(触摸),您可以尝试加载图像.通常,关键事件是当用户结束拖动并且滚动处于其最大速度时(对此有一个委托方法).您应该非常好地学习和理解这些方法,因为它们允许您仔细跟踪滚动事件,并且基于它们,您可以实验并微调图像加载.
另一个建议是,从文件系统加载后,您将缓存图像(使用系统缓存或您的某些缓存;在这种情况下请注意内存警告!).一旦收到内存警告,您就可以释放此缓存,因为表视图单元格已经保留了所有图像.
| 归档时间: |
|
| 查看次数: |
1398 次 |
| 最近记录: |