【问题标题】:Does shouldRasterize on a CALayer cause rasterization before or after the layer's transform?CALayer 上的 shouldRasterize 是否会在图层变换之前或之后导致光栅化?
【发布时间】:2012-02-02 09:25:31
【问题描述】:

我正在尝试优化我的应用。它在视觉上非常丰富,因此有很多带有大图像和混合等的分层 UIView。

我一直在试验CALayers 上的shouldRasterize 属性。特别是在一种情况下,我有一个UIView,它由许多子视图组成,包括一个表格。作为整个屏幕滚动的过渡的一部分,这个UIView 也会缩放和旋转(使用变换)。

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

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

【问题讨论】:

    标签: ios core-animation calayer


    【解决方案1】:

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

    您可以启用“绿色命中,红色未命中”。如果您的图层保持红色,则表示它确实在每一帧都对其进行了光栅化。

    【讨论】:

    • 什么会导致它变红? GPU 内存用完了?
    • 要么,要么图层被再次渲染,因此缓存失效。
    猜你喜欢
    • 2018-04-29
    • 2012-09-02
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2012-03-07
    • 1970-01-01
    相关资源
    最近更新 更多