【问题标题】:CALayer shadow performanceCALayer阴影表现
【发布时间】:2010-11-25 01:12:49
【问题描述】:

我有一个网格 CALayer(带有父 NSView,由 NSScrollView 包围),其中包含一堆子层,每个子层都绘制一个图像。当我禁用子层的阴影时,性能非常好。但是,一旦我启用它们,绘图就会开始严重滞后。

我可以做些什么来改善这一点吗?我听说在 iOS 上使用 shouldRasterize 来提高阴影性能,但该属性在 OS X 上不可用。

【问题讨论】:

    标签: objective-c cocoa core-animation calayer shadow


    【解决方案1】:

    我遇到了类似的问题,通过设置 CALayer 的 shadowPath 属性,我获得了显着的性能提升。

    【讨论】:

    • 你是如何设置这个的?作为 CGPathRef 我需要输入什么?
    • @barfoon:您正在为其创建阴影的视图的轮廓。显然,这仅适用于不透明视图,并且仅适用于可以轻松描述为路径的视图(例如矩形视图)。
    • @barfoon:是的,它最适用于容易创建路径的事物(如大多数 UIViews),这是我用来为 UIImageView 执行此操作的函数:pastebin.com/z8V8SgX8
    【解决方案2】:

    您是否打开了图层支持?然后会缓存绘图内容,这可能会提高性能。

    【讨论】:

    • 我假设您正在设置图层的阴影属性...您是否尝试过使用石英将阴影绘制到图层的背景属性中?
    • 是的,我设法用 CoreGraphics 画了一张,看起来不错。
    • 是的,我假设它是因为在图层上下文中绘制的阴影与其他所有内容一起缓存,这与动态渲染阴影的图层阴影属性不同。 iOS 有 shouldRasterize 属性,它也允许缓存阴影,但不幸的是,它目前不在 OS X 上。
    猜你喜欢
    • 2013-01-28
    • 1970-01-01
    • 2015-09-19
    • 2013-02-25
    • 1970-01-01
    • 2012-04-17
    • 2020-12-15
    • 2012-10-31
    • 2011-04-11
    相关资源
    最近更新 更多