界面优化-iOS

本文探讨了界面优化策略,包括预排版与预计算减少CPU负载,图片预解码按需加载避免内存瓶颈,以及如何利用GPU资源如FrameBuffer和VideoController处理掉帧问题。通过实例和YYKit FPS检测,提供了解决卡顿和掉帧问题的方法,并强调了异步渲染和子线程渲染的重要性。
摘要由CSDN通过智能技术生成

背景

由于界面遇到卡顿,打开某个页面发热严重,崩溃等,遇到这些问题该怎么优化呢?
1,CPU用来渲染和计算
2,GPU用来渲染纹理,Frame Buffer帧缓冲区怎么处理掉帧?Video Controller怎么控制Monitor的显示?

卡顿/掉帧

1,比如1,2,3 三帧,由于有限的处理页面缓存区,两个缓存区(双缓存机制其中重要的 vsync垂直同步信号),当某个时间段,处理2帧卡顿,其他缓存区正常,就会导致2掉帧,最后只有1,3帧
在这里插入图片描述
同一个fps时间内能渲染完就正常显示,超出的话就掉帧

卡顿检测

YYKit的FPS检测:
在这里插入图片描述

  • 正常的60FPS就已经很流畅了,越高越流畅,60FPS = 1/60 = 16.67ms垂直同步信号

界面优化-预排版&预计算

  • 页面高度,字符串长度,等预计算,然后layoutMode预排版

界面优化-预解码&预渲染

图片加载流程
在这里插入图片描述
在这里插入图片描述

  • UIImage是一个模型

图片预解码

Data Buffer 通过decode到 -> Image Buffer -> Frame Buffer 渲染
图片:SDWebImage
音视频:FFmpeg优点是牛逼的编解码

按需加载

  • 如果一个列表,优化是只显示当前显示的几条。
    在这里插入图片描述

异步渲染

在这里插入图片描述
在这里插入图片描述

  • UI事物流程:
    1,layout构建试图
    2,displayer绘制
    3,prepare coreanimation
    4,commit提交事务给 reader server
    在这里插入图片描述
    图层嵌套越深,渲染就越复杂,提升界面流畅度:
    绘制的时候到主线程,渲染在子线程去处理。

注:文章图片部分来源于网络,如有侵权请联系作者删除,文章只作为学习使用,不做商业活动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

☆MOON

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值