CGLayer和CALayer有什么区别和兼容性?

时间:2010-12-16 08:39:36

标签: cocoa core-graphics calayer cglayer

我让CGLayerCALayer感到困惑。它们看起来很相似,为什么还有单独的实现呢? CGLayerCALayer之间的区别和兼容性是什么?

1 个答案:

答案 0 :(得分:120)

它们完全不同,而且不兼容。

绝对清楚:

严格地说是巧合在两个名称中都使用了“layer”这个词;他们完全不相关

CGLayers是一种“特殊的”“高性能”的东西。

您可以将它们视为“像位图,但更好。”

苹果坐下来说:“我们厌倦了使用位图的人,让我们做出更好的事情!” : - )

实际上,您只能使用CGLayers 屏幕外

重复一遍,CGLayers完全在屏幕外使用。

一旦他们准备好了,你就可以将它们放到你的实际屏幕上(也就是说:将它们放到你的一个视图上)。

然而:请注意:CGLayers通常单独使用。)当我说它们单独使用时,我的意思是它们用于:图像处理或数学计算。在这种情况下,CGLayers永远不会出现在屏幕上,它们与屏幕世界完全没有联系。)

相比之下...... CALayers就是“in”视图中的东西。 CALayers就是视图的工作方式。

所以这两个概念完全不同。

CALayers只是“在”视图中的内容。 相比之下,CGLayers是Apple酷炫的“屏幕外高性能计算机器”。

要明确的是,CGLayers与观点完全没有联系,也没有与观点相关联。 (当然,您可以将CGLayer粘贴到视图中,但是,您可以将“排版”或“图像”粘贴到视图中。排版和图像不是视图,CGLayers不是视图。)

典型的例子是:

你想画一些复杂的东西,然后在屏幕上多次画那个东西。这个问题的答案正是CGLayers。你的“工作区”将是一个CGLayer;然后你可以将它打到打印机,屏幕或其他任何地方。

要明确,在我看来,Apple应该选择一个不同的名字 ......

一个好名字就是“CGCalculationSpace。”

名称中包含单词“layer”的事实让你想到了NSLayers。

重申:绝对没有任何关系,无论如何。 CGLayers甚至与层无关联。

完全没有联系。在名字中使用字母“l a y e r”真是令人困惑 - 这真是太可惜了!

CGLayers应该被称为“工作空间”或“计算范例”或类似的东西。

希望它有所帮助,希望你还在阅读!

相关问题