美文网首页
图层性能

图层性能

作者: GTMYang | 来源:发表于2018-07-12 09:53 被阅读0次

1. 离屏渲染

当图层属性的混合体被指定为在未预合成之前不能直接在屏幕中绘制时,屏幕外渲染就被唤起了。屏幕外渲染并不意味着软件绘制,但是它意味着图层必须在被显示之前在一个屏幕外上下文中被渲染

层的以下属性将会触发屏幕外绘制

  • 圆角(当和maskToBounds一起使用时)
  • 图层蒙板
  • 阴影

2. 混合和过度绘制

GPU会放弃绘制那些完全被其他图层遮挡的像素,但是要计算出一个图层是否被遮挡也是相当复杂并且会消耗处理器资源。同样,合并不同图层的透明重叠像素(即混合)消耗的资源也是相当客观的。所以为了加速处理进程,不到必须时刻不要使用透明图层。任何情况下,你应该这样做:

  • 给视图的backgroundColor属性设置一个固定的,不透明的颜色
  • 设置opaque属性为YES

这样做减少了混合行为(因为编译器知道在图层之后的东西都不会对最终的像素颜色产生影响)并且计算得到了加速,避免了过度绘制行为因为Core Animation可以舍弃所有被完全遮盖住的图层,而不用每个像素都去计算一遍。
如果用到了图像,尽量避免透明除非非常必要。如果图像要显示在一个固定的背景颜色或是固定的背景图之前,你没必要相对前景移动,你只需要预填充背景图片就可以避免运行时混色了。
如果是文本的话,一个白色背景的UILabel(或者其他颜色)会比透明背景要更高效。
最后,明智地使用shouldRasterize属性,可以将一个固定的图层体系折叠成单张图片,这样就不需要每一帧重新合成了,也就不会有因为子图层之间的混合和过度绘制的性能问题了。

3. 参考

iOS离屏渲染
GPU渲染简介

相关文章

  • 图层性能

    1. 离屏渲染 当图层属性的混合体被指定为在未预合成之前不能直接在屏幕中绘制时,屏幕外渲染就被唤起了。屏幕外渲染并...

  • 15、图层性能

    图层性能 要更快性能,也要做对正确的事情。——Stephen R. Covey 在第14章『图像IO』讨论如何高效...

  • iOS 滑动性能优化总结

    1. 减少图层的Blend操作。展示半透明的view,设备会把当前图层和背景图层进行alpha叠加,这是很耗性能的...

  • iOS 核心动画的图层性能

    图层性能 要更快性能,也要做对正确的事情。——Stephen R. Covey 在第14章『图像IO』讨论如何高效...

  • iOS核心动画高级技巧十二(图像IO)

    目录 隐式绘制离屏渲染混合和过度绘制减少图层数量总结 本章将着重图层树本身,以发掘最好的性能。 一 隐式绘制 寄宿...

  • ios性能优化--label上汉字图层混合问题

    说这个问题之前,我们先来说说什么是图层混合,图层混合为什么会影响性能? 首先弄懂这个问题,我们要先了解一下像素。像...

  • 图片圆角处理的封装

    圆角处理的方式 对layer图层动手脚 通过cos2d绘制 上面一种,对图层的渲染比较损耗性能,也就是会出现卡顿的...

  • iOS Core Animation(九)- 图层性能

    文本 CATextLayer和UILabel都是直接将文本绘制在图层的寄宿图中。使用时需要尽可能地避免改变这些包含...

  • Flutter setState为什么不会造成性能困扰?

    setState为什么不会造成性能困扰?因为只更新当前图层树。 flutter是怎么做element diff,做...

  • 自定义控件入门

    自定义控件的优势 对显示控件的完全控制权 使视图层级结构平面化,减少视图层级结构,提升程序性能 Demo 第一个自...

网友评论

      本文标题:图层性能

      本文链接:https://www.haomeiwen.com/subject/pmxbuftx.html