性能调优iOS技术点

iOS 界面性能调优

2018-12-14  本文已影响18人  人魔七七

前言

根据前面对于Graphics and Animations 原理我们来对界面性能进行调优,常见的就是TableView流畅度的优化。

从哪些步骤入手调试呢?

从前言的文章了解原理后我们需要从这两个我们能控制的步骤入手,因为其他系统接管我们也做不了什么


从哪两方面优化呢?

CPU和GPU两方面

CPU

虽然这方面不会影响帧率,但是会延迟动画造成界面看着迟钝。

解决方法:异步计算好视图布局并对视图布局进行缓存,不要频繁的调整视图的属性,对于特别苛刻不在乎开发效率的可以不用自动布局用frame来布局。并对列表cell高度提前异步计算并缓存

解决方法:能异步处理的异步处理。

解决方法:
1:避免重绘,Core Animation为这些图形类型的绘制提供了专门的类,并给他们提供硬件支持。CAShapeLayer可以绘制多边形,直线和曲线。CATextLayer可以绘制文本。CAGradientLayer用来绘制渐变。这些总体上都比Core Graphics更快,同时他们也避免了创造一个寄宿图。
2:异步绘制。

解决方法:用轻量级的CATextLayer,或者自定义文本控件,用 TextKit 或最底层的 CoreText 对文本异步绘制。

解决方法:
1:向下采样技术解决
UIImageView显示的图片比实际小,CoreAnimation负责缩小,其实就是把原始图像缩小到我们实际显示的大小,大量节省内存。

2:如果滚动视图一直滚动然后没有马上提供给帧缓冲区渲染到控件上就会卡顿。

我们通过其他技术进行处理

  • prefeching

  • 后台解码下载

  • GCD全局队列可能造成线程爆炸。GCD太多线程不断切换会浪费很多CPU,我们用一个串行队列中

GPU

解决方法:可以把所有效果文字图片等绘制成一张图片显示

解决方法:
给视图的backgroundColor属性设置一个固定的,不透明的颜色
设置opaque属性为YES

用什么来测量并定位?

Use Core Animation instrument to find them Know what you can do to avoid them

Use Time Profiler instrument for CPU time

参考链接:

iOS 保持界面流畅的技巧
perfect-smooth-scrolling-in-uitableviews
iOS-Core-Animation-Advanced-Techniques
Advanced Graphics and Animations for iOS Apps(session 419)

219_image_and_graphics_best_practices
419_advanced_graphics_and_animation_performance

上一篇 下一篇

猜你喜欢

热点阅读