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 加载图片优化(滑动不加载图片思路)的主要内容,如果未能解决你的问题,请参考以下文章