2014-03-03 36 views
3

我正在制作一个依赖CoreAnimation的应用程序。它有一个CAReplicatorLayer和一个CAShapeLayer作为子图层。 当有12次重复,然后为路径设置动画(在touchMoved上改变它)时,一旦图形在屏幕上变大(大约12-20fps),FPS就会显着减少。CoreAnimation性能分析 - 带CAShapeLayer的CAReplicatorLayer

时间剖析器显示CPU利用率约为10%,Open GL ES驱动程序分析器报告90-97%“渲染利用率”和40-50%“Tiler利用率”。

本指南解释了这两个词,但不是很详细。任何人都可以解释这两个是什么吗? Apple Docs

显然渲染利用率高是问题,所以我该怎么做才能提高性能?

+0

你能告诉我们你如何改变路径吗?您是追加到现有路径还是重新创建点集合中的路径?这些路径上是否有动画? –

+0

我每次将它从一组直线和圆弧中更改出来时,都会重新创建路径。我同时解决了它,尽管感谢您看看我的问题! :) – Max

回答

3

解决方法是从屏幕上移除具有透明度的所有UI元素(或将其设置为不透明)。

在使用透明度在UI元素下方或上方呈现动画化的CAShapeLayer时,填充率受到很大影响。

优化后,渲染利用率下降到30-40%。