视频聊天源码,实现iOS端的界面优化

我们知道渲染过程中是CPU和GPU协作完成的,你只有加快CPU的计算布局,优化CPU的渲染,才能使视频聊天源码界面流畅。下面来看具体的一些优化:

CPU

1、对象的创建

  • 1、尽量用轻量的对象代替重量的对象。CALayer比UIView要轻量,因为用UIView显示的它最终都要变化为CALayer显示,既然这样那直接用CALayer显示不是更好。但这里又要说一个区别,CALayer是用来显示内容的,它是不可以做交互的。而 UIView是管理事件的,所以 不需要交互 触摸的时候,我们才能用CALayer。
  • 2、使用纯代码。虽然我不喜欢用纯代码写(毕竟有点慢),但纯代码写确实多人开发易于管理。你要是xib或者Storyboard发生了冲突,不好修改。而且纯代码加载界面更快。就举个最直观的,你点击xib的时候是不是半天才能出来。
  • 3、懒加载

2、对象的调整

  • 1、尽量不必要的属性修改 CALayer内部并没有属性,当调用属性方法是,它内部是通过运行时resolveInstanceMethod为对象临时添加方法,把对应属性值保存到内部的字典中,非常耗资源。而我们修改UIView的属性时,实际就是CALayer来映射的。
  • 2、当有大量的对象释放时,也是非常耗时的。
NSArray *tmp = self.array;
self.array = nil;
dispatch_async(queue, ^{
   [tmp class];
});

3、预排版

  • 1、尽量减少视图的不急计算,这很好理解,我要算的东西少了CPU既然就快了。
  • 2、Autolayout 说实话我一直都是用Autolayout来画的,它用起来块啊,而且非常直观。但随着视图数量的增加,Autolayout会严重影响CPU的性能。
  • 3、文本计算 高度缓存
    这两个现在用到的少了,因为都是自适应了,把上下的约束设置好。不过就使用到计算宽高
[NSAttributedString boundingRectWithSize:options:context:]
[NSAttributedString drawWithRect:options:context:]

可以放到后台线程进行计算 避免阻塞主线程
高度缓存的话 使用FDTemplateLayoutCell

4、预渲染

  • 1、图片的解码+绘制

    当使用CG开头的方法绘制图像到画布中,然后从画布中创建图片时,可以将图像的绘制在子线程中进行。

  • 2、图片的优化

    • 尽量使用png图片
    • 优化图片大小,避免动态缩放
  • 3 按需加载

  • 4、少使用addview给cell动态添加view

GPU层面优化

  • 1、尽量减少在短时间内大量图片的实现,渲染非常耗时 很有可能出现掉帧的情况
  • 2、尽量避免图片的尺寸超过4096x4096,因为当图片超过这个尺寸时,会现有CPU进行鱼锤,然后在提交给GPU处理,导致额外CPU资源消耗
  • 3、尽量减少视图数量和层次,因为视图过多且重叠,CPU会将其混合,混合的过程非常耗时
  • 4、异步渲染 可以将cell中的所有控件、视图合成一张图片进行显示 Graver三方框架
  • 5、视频聊天源码避免离屏渲染 前面已经说过了

声明:本文由云豹科技转发自麻蕊老师博客,如有侵权请联系作者删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值