UITableView 卡顿、掉帧、的优化。cell里面循环创建view 导致卡顿掉帧的优化

1.关于UItableView的优化现在网上已经有很多,无外乎以下几种

1.提前计算并缓存好高度(布局),因为heightForRowAtIndexPath:是调用最频繁的方法(最好是在数据下载完成转model的时候在model里面计算)

2.滑动时按需加载,这个在大量图片展示,网络加载的时候很管用!(SDWebImage已经实现异步加载,配合这条性能杠杠的

3.正确使用reuseIdentifier来重用Cells

  4.尽量使所有的view opaque,包括Cell自身

5.尽量少用或不用透明图层

6.如果Cell内现实的内容来自web,使用异步加载,缓存请求结果

7.减少subviews的数量

8.尽量少用addViewCell动态添加View,可以初始化时就添加,然后通过hide来控制是否显示

9.尽量少使用cornerRadiusmaskToBounds来设置圆角(maskToBounds很掉帧,可以以切图代替)

10.如果是图片列表为主的cell尽量不使用imageNamed来设置图片,使用imageWithContentsOfFile来代替(原因可看:http://blog.csdn.net/lg_sun/article/details/46895457



提前计算并缓存好高度可以看一下我写的方法(可以使用自己的风格,我这只是个例子):


今天咱们来看一种导致掉帧的情况---------->cell里面循环创建view 导致卡顿掉帧

循环的addSubView是很掉帧杀手

这种情况还是比较多的,看一下我们的需求

单个cell是一个门店下边带最多5个商品,和不定量的商家推荐。这样的话里面的view1和view2就是根据后台数据循环创建的

cc


先看一下未优化之前的tableVIew滑动帧数,也就是30左右(30以下用户可以明显感觉到屏幕的卡动,可以称为垃圾APP了)




未优化之前

优化过程:

既然最多时5个view1,那就用内存和cpu来换取流畅度吧

1.直接在cell初始化的时候创建5个view1,用isHiddent来控制显示个数


2.根据model数据来付值和判断view的显隐性



看一下优化之后tableVIew滑动帧数,差不多达到50 ,这是后看起来已经相当流畅了




但是这个时候还有一个问题,因为我们是分页加载,就是一次性加载10天数据,滑动到最后一条数据之后用户上拉加在下一个10条,这样在分页加载的时候还是有一个明显的加载过程

优化前代码:




优化后代码

这样用户就不会察觉分页加载数据的那个过程




提示:页面帧数可以用core animation(用真机,因为模拟器的cpu,内存都是虚拟的)





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值