一、页面卡顿的原因
图像的显示原理:图像的显示需要GPU和CPU两者配合,CPU主要负责视图的创建,布局的计算和视图的绘制,然后进行图片的解码,将生成的位图交给GPU,GPU进行渲染,并将渲染的结果交到帧缓冲区,待下一个VSync 信号到来的时候视频控制器从帧缓冲区取出数据,经过转换,显示到屏幕上。如果在规定的16.7ms内,CPU和GPU的合作未完成,没有生成新的渲染数据到帧缓冲区中,那么就会出现卡顿或者掉帧的情况。
二、页面卡顿优化方案
那么针对卡顿和掉帧的优化方案,在知晓了图像显示需要CPU和GPU配合工作后,就可以从CPU和GPU两方面入手:
CPU
- 对象的创建和销毁放到子线程中做
- 布局计算和文本计算放到子线程中异步处理
- 使用轻量级对象,如CALayer代替UIView
- 文本异步绘制
- 控制并发线程数量
- 减少重复计算布局,减少修改frame等
- 使用frame布局而非AutoLayout
- 使图片的size和frame一致
GPU
- 避免离屏渲染
- 视图混合,减少透明视图,减少视图层级复杂性
- 纹理的尺寸要控制,GPU能处理的纹理最大为4096*4096,一旦超过,则会调用CPU资源处理
网友评论