iOS界面优化 ——卡顿检测和优化方案

本文探讨了iOS界面卡顿的原理,包括帧渲染和双缓冲机制,并介绍了三种卡顿检测方法:CADisplayLink监测、RunLoop监控和第三方工具。接着,提出了界面优化策略,如提前计算视图布局、图片预解码、减少透明视图的使用以及利用轻量级对象提升性能。最后,强调了避免频繁修改UIView和CALayer属性以及适当释放资源的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iOS界面优化 ——卡顿检测和优化方案

1. 卡顿原理

卡顿,也就是掉帧。当UIView被绘制时,cpu执行drawrect,通过context将数据写入backingstore
当backingstore 写完后,通过 render server 交给gpu去渲染,渲染的东西放到framebuffer里面,然后通过Video Controller交给monitor进行显示。说到底cpu就是做绘制的操作把内容放到缓存里,gpu负责从缓存里读取数据然后渲染到屏幕上。

最开始时,FrameBuffer只有一个,这种情况下FrameBuffer的读取和刷新有很大的效率问题,如果gpu卡在那边,那么FrameBuffer接受不到消息,就会闲置。为了解决这个问题,引入了双缓存区。即双缓冲机制。在这种情况下,GPU会预先渲染好一帧放入FrameBuffer,让视频控制器读取,当下一帧渲染好后,GPU会直接将视频控制器的指针指向第二个FrameBuffer。这时候,如果中间有的帧在一定时间内没有渲染完,那么就会被丢弃掉,转而去渲染下一个帧。这时候,就会出现卡顿。

这里采用了垂直同步信号机制来进行帧和帧的切换。当开启垂直同步后,GPU会等待显示器的VSync信号发出后,才进行新的一帧渲染和FrameBuffer更新。而目前iOS设备中采用的正是双缓存区+VSync

2. 卡顿检测

这里推荐三种卡顿监控的方案:

  • FPS监控:为了保持流程的UI交互,App的刷新应该保持在60fps左右,其原因是因为iOS设备默认的刷新频率是60次/秒,而1次刷新(即VSync信号发出)的间隔是 1000ms/60

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值