iOS中保持界面流畅的一些小技巧

  图像的显示原理:
    由CPU计算提交到GPU进行渲染引入到帧缓存区,随后视频控制器会按照VSync(垂直同步信号)逐行读取帧缓存区的数据,经过可能的数模转换传递给显示器显示。

CPU资源消耗原因和解决方案:
1、对象的创建:对象的创建会分配内存,调整属性,甚至读取文件等操作,比较消耗CPU资源。在创建的时候可以尽量选择轻量级的对象来代替重量级的对象,这样就可以对性能有所优化。比如CALayer就比UIView要轻量级许多,那么不需要响应对象的触摸时间的控件,可以用CALayer显示会更加的合适。通过SB创建视图对象,其消耗的资源比远远大于通过代码创建对象,在性能比较敏感的界面,尽量不要使用SB。
2、对象的调整:对象的调整会消耗CPU资源。在性能优化的时尽量避免调整视图层次,添加和移除视图。
3、对象的销毁:主要是针对于容器类的释放,如存放大量数据的字典或者是数组对象。
4、布局计算:
    autolayout:对于复杂的视图使用它就会很消耗CPU
    文本计算: 如果你对文本显示没有特殊要求,可以参考下 UILabel 内部的实现方式:用 [NSAttributedString boundingRectWithSize:options:context:] 来计算文本宽高,用 -[NSAttributedString drawWithRect:options:context:] 来绘制文本。
    文本渲染:在底层都是通过CoreText排版,绘制为Bitmap显示。
    图片的解码:图片解码都是发生在主线程的,并且不可避免。如果想要绕开这个机制,常见的做法是在后台线程先把图片绘制到CGBitmapContext中,然后从Bitmap直接创建图片。
    图像的绘制:一般都是痛UIView的DrawRect方法进行绘制的。

GPU资源消耗原因和解决方案:
    相对CPU来说,GPU干的事情比较单一。它可以提交纹理,顶点描述,应用变换,混合并渲染。
1、纹理的渲染:所有的Bitmap,包括图片,文本,栅格化的内容,最终都要由内存提交到显存,绑定为GPU的Texture。注意:不要超过GPU的最大纹理尺寸。4096 x 4096
2、视图的混合:对于多个视图的重叠显示。
3、图形的生成:当一个列表里面出现大量的CALayer,并且快速滑动时。最彻底的解决方法就是把需要显示的图形在后台线程绘制为图片,避免使用圆角,阴影,遮罩等属性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值