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

我很困惑CGLayerCALayer 。 他们看起来很相似,那么为什么有单独的实现? CGLayerCALayer什么区别和兼容性?

他们是完全不同的,不兼容。

要绝对清楚:

这两个名称中使用“层”这个词是严格的巧合 , 他们是完全无关的

CGLayers是一个“特别”“高性能”的东西。

你可以认为他们“像位图,但更好”。

苹果坐下来说:“我们讨厌使用位图的人,让我们做点更好的事! 🙂

事实上,你只能在CGLayers外面工作。

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

一旦他们准备好了,你就可以把它们爆炸到你的屏幕上(也就是说:把它们吹到你的一个观点上)。

但是 :注意:CGLayers经常被单独使用,当我说它们被单独使用时,我的意思是它们被用于:image processing或math计算,在这种情况下,CGLayers从来没有在屏幕上看到过,完全没有连接到屏幕上的世界。)

相比之下… CALayers只是“在”的意见。 CALayers只是如何工作。

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

CALayers只是“在”的意见。 相比之下,CGLayers是苹果公司非常酷的“屏外高性能计算机”。

要明确,CGLayers完全没有意见的联系,并没有意见。 (当然,你可以将一个CGLayer粘贴到一个视图中,但是你可以在视图中粘贴“typography”或“an image”。排版和图像不是视图,CGLayers不是视图。

典型的例子是这样的:

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

要明确,在我看来,苹果应该select一个不同的名字

一个好名字就是“CGCalculationSpace”。

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

重申:无论如何,绝对没有任何关系。 CGLayers甚至与层次模糊不清。

根本没有联系。 这真是令人困惑的是,名字中使用的字母“层” – 这是一个耻辱!

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

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