Cocoa 什么';CGLayer和CALayer的区别和兼容性是什么?
我把Cocoa 什么';CGLayer和CALayer的区别和兼容性是什么?,cocoa,core-graphics,calayer,cglayer,Cocoa,Core Graphics,Calayer,Cglayer,我把CGLayer和CALayer搞混了。它们看起来很相似,那么为什么会有不同的实现呢?CGLayer和CALayer之间的区别和兼容性是什么?它们完全不同,不兼容 非常清楚地说: 两个名称中都使用了“层”一词,这完全是巧合;它们是完全不相关的 CGlayer是一种“特殊的”“高性能”的东西 你可以把它们看成“位图,但更好。” 苹果坐下来说:“我们讨厌人们使用位图,让我们做些更好的事情吧!”:-) 实际上,您只能在屏幕外使用CGLayers 重复一下,CGLayers完全在屏幕外使用 一旦它们准
CGLayer
和CALayer
搞混了。它们看起来很相似,那么为什么会有不同的实现呢?CGLayer
和CALayer
之间的区别和兼容性是什么?它们完全不同,不兼容
非常清楚地说:
两个名称中都使用了“层”一词,这完全是巧合;它们是完全不相关的
CGlayer是一种“特殊的”“高性能”的东西
<>你可以把它们看成“位图,但更好。”
苹果坐下来说:“我们讨厌人们使用位图,让我们做些更好的事情吧!”:-)
实际上,您只能在屏幕外使用CGLayers
重复一下,CGLayers完全在屏幕外使用
一旦它们准备好了,您就可以将它们放在实际屏幕上(也就是说:放在您的一个视图上)
(然而:注意:CGLayers通常“单独”使用。当我说它们“单独”使用时,我的意思是它们用于:图像处理或数学计算。在这种情况下,CGLayers永远不会出现在屏幕上,它们与屏幕上的世界完全没有联系。)
相比之下Calayer只是视图中的内容。Calayer就是视图的工作方式。
所以这两个概念是完全不同的
Calayer只是视图中的东西相比之下,CGlayer是苹果酷炫的“屏幕外、高性能、计算机器”。
要清楚的是,CGlayer与视图完全没有连接,也与视图没有关联。(当然,您可以将CGLayer粘贴到视图中,但随后,您可以将“排版”或“图像”粘贴到视图中。排版和图像不是视图,CGLayer也不是视图。)
典型的例子是:
你想画一次复杂的东西,然后在屏幕上画很多次。这个问题的答案正是如此。你的“工作区域”将是一个CGLayer;然后你可以把它放到打印机上、屏幕上或其他任何地方
说清楚,在我看来,苹果应该选择一个不同的名字
一个好名字应该是“CGCalculationSpace”
名称中包含单词“layer”,这一事实让您想到了NSLayers
再说一遍:绝对没有任何关系,不管怎样。CGLayers甚至与层没有模糊的关联
根本没有联系。名称中使用字母“l a y e r”真是令人困惑,真是太遗憾了
CGLayers应该被称为“工作空间”或“计算范例”之类的东西
希望它能帮助你,希望你还在阅读 非常感谢!我读得很透彻。描述得很好,很有帮助。特别是关于CGLayer与CALayer的比较=‘屏幕外合成’与‘现场合成’以及‘不兼容’。我对你的描述有了概念;CALayer是CGLayer的一个抽象的OO模型。(场景图?)无论如何,再次感谢!我重新阅读了你的答案,我意识到我有一个误解。CGLayer与CALayer无关。CGLayer是绘图工具的一部分,CALayer是compositor.OMG的一部分,这是一个惊人的答案。非常感谢您花时间将两者区分得如此清楚!它解决了我的几个疑问++“希望你还在阅读”的分数是:谢谢你的文章,非常好,它帮助我理解这两个概念。