【问题标题】:What's the difference between a CoreAnimation Layer Backed View and a Layer Hosting View?CoreAnimation 图层支持视图和图层托管视图有什么区别?
【发布时间】:2008-12-09 01:16:57
【问题描述】:

Core Animation 中的 Layer Backed View 和 Layer Hosting View 有什么区别?

设置每种类型的步骤是什么?何时适合使用任何一种类型?

【问题讨论】:

    标签: cocoa cocoa-touch core-animation


    【解决方案1】:

    支持图层的视图包含 Cocoa 或 Cocoa Touch UI 控件,并且可以使用动画代理进行动画处理。支持图层的视图允许您为 UI 设置动画,并通过将视图内容缓存在核心动画层上来帮助减少绘制的开销。通过设置想要的图层属性创建一个图层支持的视图:

    NSView *layerBacked = [NSView new];
    [layerBacked setWantsLayer:YES];
    

    图层托管视图提供了一个图层,用于由 NSView 或 UIView 托管的直接操作。图层托管视图可用于在任何可以放置 NSView 的位置嵌入核心动画绘图和动画:

    NSView *layerHosting = [NSView new];
    [layerHosting setLayer:[[CALayer new] autorelease]];
    [layerHosting setWantsLayer:YES];
    

    【讨论】:

    • 另请注意,在 Cocoa Touch 中,所有 UIView 都默认支持图层
    • 您错过了“[layerHosting setWantsLayer:YES];”。 Apple 明确表示,您也必须为图层托管视图调用它,但是,只有在设置图层之后。请参阅 NSView 文档。我相应地修正了你的答案。
    • 我发现thisthis 讨论非常有帮助。
    • 一种方法与另一种方法相比有什么好处?从本质上讲,它们似乎都将 CALayer 与 NSView 相关联,但是...?
    • @alexgray:“层支持的 NSView”可以有子视图;毕竟这是一个普通的视图,它只是使用一个层作为“像素后备存储”,而不是其他视图使用的那种存储;但是 NSView 的支持层不能有子层(不支持“层层次结构”)。 “层托管”视图不能有子视图,其唯一目的是“托管层”,但它托管的层可以具有子层和非常复杂的层树层次结构。这对你有意义吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2017-03-18
    • 1970-01-01
    • 2011-04-08
    相关资源
    最近更新 更多