Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 什么';CGLayer和CALayer的区别和兼容性是什么?_Cocoa_Core Graphics_Calayer_Cglayer - Fatal编程技术网

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的一部分,这是一个惊人的答案。非常感谢您花时间将两者区分得如此清楚!它解决了我的几个疑问++“希望你还在阅读”的分数是:谢谢你的文章,非常好,它帮助我理解这两个概念。