问答 ——如何加强 iOS 里的列表滚动时的顺畅感?
来源:互联网 发布:用友软件好学吗 编辑:程序博客网 时间:2024/04/20 03:23
如果你想要如丝般顺滑的效果,那么:
1、每次都看一下有没有能重用的 cell,而不是永远重新新建(这个是 UITableView 的常识)
2、Cell 里尽量不要用 UIView 而是全部自己画
3、图片载入放到后台进程去进行,滚出可视范围的载入进程要 cancel 掉,需要显示多大图片就加载多大的图。比如图片墙,如果接口返回的图片没有小图,可以用程序处理成小图缓存起来,然后实际加载小图,这样可以很大程度加快滚动时的渲染速度,提高运行效率,注意,这里说的处理成小图不是UIImageView压缩成小图,而是直接把UIImage处理成小图,因为UIImageView虽然显示出了小图,但实际上渲染的还是大图
4、圆角、阴影之类的全部 bitmap 化,或者放到后台 draw 好了再拿来用
5、Cell 里要用的数据提前缓存好,不要现用现去读文件
6、数据量太大来不及一次读完的做一个 load more cell 出来,尽量避免边滚边读数据,这样就算是双核的 CPU 也难保不会抽
做到以上6条的话,应该就能做出很顺畅的滚动了(现在的 Twitter 官方客户端的原作者写过一篇文章,总结起来也无非就是我说的前3条,可以找来看看)。
Path 2.5 的那个滚动说实在的不是很顺畅,图片显示出来的时候都会抽一下,他们还有很大的改进余地。
对于3的补充说明:UIImageView 的载入是惰性的说法,是对的。[UIImage imageWithContentOfFile:] 出来的 UIImage 其实并没有真正把文件读入内存,而是要等到用的时候才会去读。但问题就在于 UIImageView 试图去 draw 图片的时候,它读文件、渲染也是在主线程里做的,所以你要读入的图片如果很大(比如 iPad3 上的 @2x 图),不管 iOS 做了何种优化,这一步是一定要卡的。这也就是为什么我说图片要放到后台进程读出来、scale好再用。
另外有人写了一篇关于UITableView滚动流畅性优化的文章,有兴趣的童鞋可以看看! 点击打开链接
- 问答 ——如何加强 iOS 里的列表滚动时的顺畅感?
- 如何加强iOS里的列表滚动时的顺畅感
- 如何加强 iOS 里的列表滚动时的顺畅感
- 如何加强 iOS 里的列表滚动时的顺畅感?
- 如何让你的iOS列表滚动如丝般顺滑
- 如何保障工程师之间的沟通顺畅?
- viewpager放在scrollview中时,滑动viewpager里的内容会不顺畅
- 关于Spring的69个问答——终极列表
- 在面试时遇到不了解的问题,如何顺畅的与面试人员交流?
- 在面试时遇到不了解的问题,如何顺畅的与面试人员交流?
- Egret的滚动list列表如何使用
- 如何让您的PC 保持顺畅运行
- 前端工程师,如何更顺畅的和后端工程师合作
- 如何控制word里的多级列表
- 滚动的列表
- 关于Spring的69个面试问答——终极列表
- 关于Spring的69个面试问答——终极列表
- 关于Spring的69个面试问答——终极列表
- 我在阿里云的日子里,初测登陆和性能测试
- 推荐一款js写的遮罩数据加载插件showLoading
- log4j日志输出性能优化-缓存、异步
- UVa 793 - Network Connections
- Cocoa之Core Data(1)框架详解
- 问答 ——如何加强 iOS 里的列表滚动时的顺畅感?
- 两台Mysql数据库数据同步实现
- void与void*详解
- oracle中常用表和视图
- merge into 用法小结
- php出现Cannot modify header information问题的解决方法大全
- Tomcat4 单实例的Bug
- android的图片加载几种方法
- 数据库入门