iOS-底层原理35-界面优化

《iOS底层原理文章汇总》
上一篇文章iOS-底层原理34-内存管理(下)和RunLoop介绍了内存管理底层原理和RunLoop,本文接着介绍界面优化

1.卡顿原理:掉帧

双缓冲区,垂直同步信号VSync
后置缓冲区第二帧渲染耗时,第三帧显示信号VSync发送过来切换到前置缓冲区,渲染完正常显示,显示第四帧信号VSync发送切换到后置缓冲区,覆盖了第二帧,第二帧完美错过,过候不等,掉帧


image.png

image.png

2.卡顿检测

I.FPS检测卡顿
CADisplayLink


image.png

image.png

image.png

II.Runloop卡顿检测
监控runloop运行事务的耗时:事务的状态


image.png

III.微信卡顿检测工具:matrix
image.png

image.png

image.png

超时时间为2秒
image.png

IV.滴滴卡顿方案:DoraemonKit

3.实战优化项目

tableView,maskToBound圆角
A.预排版:提前计算,内存缓存


image.png

B.预解码:图片加载


image.png

image.png

SDWebImage中的图片预解码:新起一个编解码队列
image.png

image.png

image.png

image.png

查看imageView的编解码流程:编解码发生在主线程,给了主线程压力,可以像SDWebImage优化到子线程中


image.png

image.png

C.按需加载
image.png

D.异步渲染
UIView的drawRect前后,分别做了什么?
image.png

image.png

面试题:UIView和CALayer的关系

I.UIView的底层是通过CALayer来驱动的
II.UIView能够交互
III.UIView侧重于显示 layer侧重于内容的绘制
IV.UIView会成为CALayer的代理 UIView的显示交给CALayer的display方法进行渲染

Graver渲染流程

image.png

image.png

image.png

位图赋值


image.png

image.png

位图具有响应功能:WMGMixedView-->WMGCanvasControl-->WMGCanvasView-->WMGAsyncDrawView-->UIView,满足响应链机制
image.png

image.png

image.png

image.png

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

推荐阅读更多精彩内容