UItableview的优化,滑动的时候卡

在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是cell中包含图片的情况时。

实际上针对性地优化一下就可以解决tableview滑动的时候卡顿的问题:

1.使用不透明的视图。不透明的视图可以提高渲染的速度。可以将cell及其子视图的opaque属性设置为yes(默认值)。

2.不要重复创建不必要的cell。uitable只需要一屏幕的uitablevcell对象即可。因此在cell不可见的时候,可以将其缓存起来,而在需要的时候继续使用它即可。注意:cell被重用的时候,需要调用setneedsdispalyinrect或者setneedsdisplay方法重绘cell。

3.减少动画效果的使用,最好不要使用。

4.减少视图的数目。cell包含了textlabel、detailtextlabel和imageview等view、而你还可以自定义一些视图放在它的contentview里,创建它会消耗较多的资源,。并且也影响渲染的性能。

5.cell包含图片、并且数目较多、使用自定义的cell速度会比默认的快很多。

6.不要做多余的绘制工作。在实现drawRect的时候,它的rect参数就是需要绘制的区域,这个区域之外的不需要进行绘制。

7.预渲染图像。

如果上诉几点做到之后,当新的图像出现的时候还是有点卡顿的现象,那么可以在图像上下文中画。导出UIimage对象,然后再绘制到屏幕。使用异步绘制

8.不要阻塞主线程。tableview在更新数据的时候,整个界面卡住不动,完全不响应用户请求。常见的是网络请求,等待时间长待数秒。

解决办法:使用多线程,让子线程去执行这些函数或者方法。

注意:当下载线程数超过2的时候,会显著影响主线程的性能。所以在不需要响应用户请求的时候,下载线程可以增加到5,不建议再增加了,以加快下载速度。如果用户正在交互,应该把线程数量控制在2个以内。

9.提前计算并缓存好高度,因为heightforrowatindexpath调用非常的频繁。

10.选择正确的数据结构:学会选择会业务场景最适合的数组结构是写出高效代码的基础。比如,数组:有序的一组值。使用索引来查询很快,使用值查询很慢,插入/删除很慢。字典:存储键值对,用键来查找比较快。集合:无序的一组值,用值来查找比较快,插入/删除很快。

11.gzip/zip压缩:当从服务器下载相关附件时,可以通过gzip/zip压缩后再下载,使得内存更小,下载速度更快。

如何为在tableview的cell中嵌套collectionview?

用自定义的继承于UItableviewcell的类,在initwithframe的构造方法中,初始化自定义继承自UIcollectionview的类。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,203评论 4 61
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,327评论 30 472
  • 感恩磬叔对我的提醒,其实从他身上我还是能够学到很多的,他什么事都不会当年拒绝别人,但是一转身也会有所抱怨,然后自己...
    楚泽清荷阅读 1,371评论 0 0
  • 微出汗,好久不跑了。 三公里。 安静,去吃早餐!
    来自B612的毛毛阅读 962评论 0 0
  • 工作效益与报酬挂钩 想要高工资 得看付出了多少 通过正确的方法得到属于自己的高工资。
    胶州宝龙DDM刘梦月阅读 1,306评论 0 0