TableView 加载图片优化(滑动不加载图片思路)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TableView 加载图片优化(滑动不加载图片思路)相关的知识,希望对你有一定的参考价值。

参考技术A 目的: 解决在滑动的时候加载图片,出现卡顿的现象。
1.利用scorllView的代理方法来优化
UIScrollView的两个代理方法,在这两个方法中调用给imageView赋值的方法,就能避免滑动时加载图片导致UITableView滚动卡顿的问题

2.利用Runloop在UIScrollView滑动时和App默认运行时的Model不同来实现
利用PerformSelector设置当前线程的Runloop的运行模式,
NSDefaultRunLoopMode:App的默认运行模式,通常主线程是在这个运行默认下运行的,
UITrackingRunLoopMode:跟踪用户交互事件(用于 ScrollView 追踪触摸滑动,保证界面滑动时不受其他Mode影响)然后 我们滑动UITableView时候 RunLoop的运行模式就会变为UITrackingRunLoopMode所以我们把给ImageView加载图片的方法用PerformSelector设置当前线程的RunLoop的运行模式kCFRunLoopDefaultMode 这样滑动时候就不会执行加载图片的方法了
[cell performSelector:@selector(setImage:) withObject:nil afterDelay:0.1 inModes:@[NSDefaultRunLoopMode]];

补充:tableView优化总结

tableView优化方式总结

(说明:一下只是我自己的小总结,会有不足,望大神指正,多谢大家了)

1 缓存 cell 的行高.目的方便第二遍访问 cell.

2 减少图片的blend 操作.包括:设置不透明的视图.UIView 的背景色不要使用 clearColor和控件避免使用带 alpha 的图片

3 cell 的重用

4 当加载的数据比较小的时候,可以将加载的耗时操作用异步操作.

5 与渲染图片.即先在 bitmap context里先将其渲染一边,导出成 UIImage 对象,在讲起渲染到屏幕上.

6 异步加载过多的时候用 UIScrollView 的代理来解决.

7 当内存比较紧张的时候,要释放掉所有的子线程并手动的将代理设置为 nil.

以上是关于TableView 加载图片优化(滑动不加载图片思路)的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发学习-如何优化tableview的使用

tableView优化思路

iOS tableView图片未知宽高加载优化 之 runloop

web前端性能优化——图片加载的优化

补充:tableView优化总结

Flutter ListView优化(滑动不加载,停止滑动加载)