2012-02-02 47 views
9

我正在尝试优化我的应用程序。这是相当丰富的视觉,所以有相当多的分层UIViews与大图像和混合等应该在CALayer上进行栅格化处理会在图层转换之前还是之后导致栅格化?

我一直在试验shouldRasterize财产CALayers。特别是在一个案例中,我有一个UIView,它由许多子视图组成,包括一个表。作为整个屏幕滚动的转换的一部分,此UIView也可以缩放和旋转(使用转换)。

UIView的内容保持不变,所以我认为设置view.layer.shouldRasterize = YES是有意义的。但是,我没有看到业绩增长。难道它是以新的比例和旋转对每一帧进行重新栅格化?我希望当它有一个标识转换矩阵时,它会在开始时栅格化,然后在转换过程中缩放和旋转时缓存它?

如果不是,有没有办法强制它发生?添加额外的超级视图/图层,除了缩放和旋转其光栅化内容之外,没有什么...

回答

8

您可以通过使用CoreAnimation instrument来分析您的应用程序来回答自己的问题。请注意,这仅适用于设备。

您可以启用“颜色命中绿色和错过红色”。如果你的图层保持红色,那么这意味着它确实在每一帧都进行光栅化处理。

+0

什么会导致它变红?用完GPU内存? – jjxtra 2012-06-14 15:57:58

+0

要么是这个,要么是图层再次被渲染,所以缓存会失效。 – NachoSoto 2013-02-13 04:18:41