读iOS核心动画笔记

“GPU每一帧可以绘制的像素有一个最大限制(就是所谓的fill rate),这个情况下可以轻易地绘制整个屏幕的所有像素。但是如果由于重叠图层的关系需要不停地重绘同一区域的话,掉帧就可能发生了。

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

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

设置opaque属性为YES

这样做减少了混合行为(因为编译器知道在图层之后的东西都不会对最终的像素颜色产生影响)并且计算得到了加速,避免了过度绘制行为因为

“因为编译器知道在图层之后的东西都不会对最终的像素颜色产生影响)并且计算得到了加速,避免了过度绘制行为因为Core

Animation可以舍弃所有被完全遮盖住的图层,而不用每个像素都去计算一遍。”

“如果用到了图像,尽量避免透明除非非常必要。如果图像要显示在一个固定的背景颜色或是固定的背景图之前,你没必要相对前景移动,你只需要预填充背景图片就可以避免运行时混色了。

如果是文本的话,一个白色背景的UILabel(或者其他颜色)会比透明背景要更高效。

最后,明智地使用shouldRasterize属性,可以将一个固定的图层体系折叠成单张图片,这样就不需要每一帧重新合成了,也就不会有因为子图层之间的混合和过度绘制的性能问题了。”

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 书写的很好,翻译的也棒!感谢译者,感谢感谢! iOS-Core-Animation-Advanced-Techni...
    钱嘘嘘阅读 2,337评论 0 6
  • 在第14章『图像IO』讨论如何高效地载入和显示图像,通过视图来避免可能引起 动画帧率下降的性能问题。在最后一章,我...
    努力奔跑的小男孩阅读 412评论 0 0
  • 江统已经看出了“五胡乱华”的模糊前景,遂撰写著名的《徙戎论》,作为向当权者发出的严厉警告。从今人的角度看,这篇政论...
    坤乾泰阅读 787评论 0 1
  • 小桥流水的人家院落, 叽叽喳喳的鸟叫鸭喊, 孩童的玩闹嬉戏, 欢呼吵吵的浮影片段是我们回不去了的流金岁月。 一直一...
    阿俊xi阅读 167评论 0 0
  • 《卫风 氓》 一/倾心 (记得那时,我很年少,对于世事,还不够明了。) 农家英俊的小伙子,憨厚的笑。 怀抱着布匹,...
    相忘于江湖的刘老师阅读 417评论 3 5