美文网首页
iOS 卡顿问题

iOS 卡顿问题

作者: dxin_101 | 来源:发表于2018-05-04 10:32 被阅读0次

iOS的卡顿问题主要是GPU和CPU的限制,

CPU:

1.对象的创建,释放,属性调整。这里尤其要提一下属性调整,CALayer的属性调整的时候是会创建隐式动画的,是比较损耗性能的。

2.视图和文本的布局计算,AutoLayout的布局计算都是在主线程上的,所以占用CPU时间也很多 。U

3.文本渲染,诸如UILabel和UITextview都是在主线程渲染的

4.图片的解码,这里要提到的是,通常UIImage只有在交给GPU之前的一瞬间,CPU才会对其解码。

GPU:

1.视图的混合。比如一个界面十几层的视图叠加到一起,GPU不得不计算每个像素点药显示的像素

2.离屏渲染。视图的Mask,圆角,阴影。

3.半透明,GPU不得不进行数学计算,如果是不透明的,CPU只需要取上层的就可以了

4.浮点数像素

优化方案2种

第一种 :(——使用一个些成熟的框架,例如:用AsyncDisplayKit来写复杂的界面。能够获得异步绘制,预先加载等诸多好处。不过,需要一定的学习成本,前段时间看了下网易新闻的安装包,就使用了AsyncDisplayKit

大多数性能要求较高的界面就是图文混排,比如微博Feed,微信朋友圈等界面。建议使用成熟的图文混排引擎,因为这些引擎一般支持异步绘制,并且做了大量优化。推荐两个 YYKit,DTCoreText.)

第二种就用你的技术底蕴(

异步绘制

把复杂的界面,放到后台线程里绘制成一个bitmap,然后再显示。虽然有些延迟,不过换来的却是平滑的界面。

图片的解码

建议使用成熟的库,比如SDWebImage等,能够在后台进行图片解码,减少CPU的使用。

预加载与缓存

对于复杂的TableView,可以对Cell视图的各个控件的大小,位置后台进行预计算,并且缓存起来。这样保证在heightForRow和cellForRow中不进行大量的计算。

尽量使用CALayer

因为Layer是一个轻量级的视图结构,它不接受通知,不接受触摸,不在响应链。所以,相对于UIView来说,它的性能较好。并且CALayer及其子类是可以使用GPU渲染的,能够硬件加速。

图层预合成

将两个CALayer的内容合成到一个Bitmap里,然后显示。能够减轻GPU的压力

相关文章

  • 如何避免卡顿掉帧

    本次初步讨论两个问题: Native 卡顿 网页卡顿 Native卡顿 iOS客户端卡顿已经是老生常谈的问题了,解...

  • iOS通过runloop监控卡顿

    质量监控-卡顿检测iOS实时卡顿监控基于Runloop简单监测iOS卡顿的demo微信iOS卡顿监控系统iOS-R...

  • iOS 卡顿问题

    iOS的卡顿问题主要是GPU和CPU的限制, CPU: 1.对象的创建,释放,属性调整。这里尤其要提一下属性调整,...

  • iOS卡顿监测方案总结

    iOS卡顿监测方案总结iOS卡顿监测方案总结

  • 渲染 Rendering

    在进行iOS的性能优化中,会碰到卡顿的问题,虽然iOS设备的性能越来越高,但是卡顿的问题还是有可能会出现,而离屏渲...

  • 卡顿检测资料

    微信iOS卡顿监控系统 卡顿方案思考 卡顿检测 移动端监控体系之技术原理 iOS性能检测

  • Matrix-iOS 卡顿、内存监控 (一)

    Matrix-iOS 卡顿监控Matrix-iOS 内存监控 一、卡顿检测 Matrix-iOS 在addMoni...

  • iOS离屏渲染之优化分析

    在进行iOS的应用开发过程中,有时候会出现卡顿的问题,虽然iOS设备的性能越来越高,但是卡顿的问题还是有可能会出现...

  • iOS离屏渲染之优化分析

    在进行iOS的应用开发过程中,有时候会出现卡顿的问题,虽然iOS设备的性能越来越高,但是卡顿的问题还是有可能会出现...

  • iOS卡顿优化

    iOS卡顿优化

网友评论

      本文标题:iOS 卡顿问题

      本文链接:https://www.haomeiwen.com/subject/oetdrftx.html