当前位置:  开发笔记 > 前端 > 正文

CoreAnimation图层支持视图和图层托管视图之间有什么区别?

如何解决《CoreAnimation图层支持视图和图层托管视图之间有什么区别?》经验,为你挑选了1个好方法。

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

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



1> alfwatt..:

图层支持的视图包含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];


@alexgray:"图层支持的NSView"可以有子视图; 毕竟它是一个普通的视图,它只是使用一个层作为"像素后备存储",而不是那种使用的存储视图; 但是NSView的后备层不能有子层(不支持"层层次结构")."图层托管"视图不能包含子视图,其唯一目的是"托管图层",但它所托管的图层可以包含子图层和非常复杂的图层树层次结构.这对你有意义吗?
另请注意,在Cocoa Touch中,默认情况下所有UIView都是图层备份
你错过了"[layerHosting setWantsLayer:YES];".Apple明确表示,只有在设置图层后,您还必须将其称为图层托管视图.请参阅NSView文档.我相应地修正了你的答案.
一种方法与另一种方法有什么好处?从本质上讲,它们似乎都将CALayer与NSView相关联,但......?
我发现[这](http://www.cocoabuilder.com/archive/cocoa/299905-nsview-calayer-setneedsdisplay.html)和[this](http://www.cocoabuilder.com/archive/cocoa/304625 -understanding-layer-backed-views.html)讨论非常有帮助.
推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有