前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS TableView 优化

iOS TableView 优化

作者头像
赵哥窟
发布2021-05-19 14:29:36
6990
发布2021-05-19 14:29:36
举报
文章被收录于专栏:日常技术分享日常技术分享

在GitHub在看了WeChat ,只提取了朋友圈的代码写了一个Demo。代码很简单。

如果想深入了解,可以参考iOS 保持界面流畅的技巧这篇文章写得很非常好。

优化就注意几点

1.TableView性能影响最大的是每个cell高度的获heightForRowAtIndexPath,这个函数会调用很多次,对于不是固定高度的cell,每次都需要去计算。像朋友圈这种,内容框的高度是需要通过计算文字得到高度的,这种大量的操作是很损耗性能的。所以,在请求完数据之后就计算好每个cell的高度,并且缓存起来,下次直接从缓存拿过来用。

2.使用一些高性能的组件比YY系列YYAnimatedImageView,YYLabel

3.可以把消耗性能的操作放到子线程中执行,不要阻塞主线程。 UIKit的工作基本上都是在主线程上进行,界面绘制,用户输入响应等等。所以当所有的代码逻辑都放在主线程时,某些耗时任务可能会卡住主线程造成程序无法响应,流畅度降低等问题;所以网络请求,cell高度计算,布局计算可以放在子线程执行。

4.尽可能的降低Storyboard,Xib的使用 在网上的一些资料了解到,xib或者storyboard本身就是一个xml文件,添加删除控件必然中间多了一个encode/decode过程,增加了cpu的计算量。Xib文件是在主线程中进行加载布局,所以Cell最好使用纯代码布局。如果cell高度是固定这种情况可以少量使用Xib。

5.滑动过程中尽量减少重新布局 自动布局就是给控件添加约束,约束最终还是转换成frame。所以在满足业务需求情况下,如果view布局层次较为复杂,尽量减少自动布局约束,转为手动计算布局,大量的约束重叠也会增加cpu的计算量

6.调试的时候可以借助监测TPS的工具 一般滚动的时候TPS<=60滚动都很流畅。(这个监测工具Demo里面有),也可以通过Xcode自带的调试工具Instruments来看看界面的流畅度。

7.其实做到上面几点基本就解决问题。至于什么按需加载看情况需不需要优化。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 优化就注意几点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档