What's the difference and compatibility of CGLayer and CALayer?
我混淆了
它们是完全不同的,并且不兼容。
要绝对清楚:
两个名称中都使用" layer "一词完全是巧合;它们是完全无关的。
CGLayers是一个"特殊" "高性能"的东西。
您可以认为它们"就像位图一样,但是更好。"
苹果公司坐下来说:"我们讨厌使用位图的人,让我们做得更好!":-)
实际上,您只能在屏幕外使用CGLayers。
要重复,CGLayers完全在屏幕外使用。
一旦准备好,您就可以将它们放到您的实际屏幕上(也就是说:将它们放到您的其中一个视图上)。
(但是:请注意:CGLayers通常"单独使用"。当我说它们单独使用时,我的意思是它们用于:图像处理或数学计算。在这种情况下,CGLayers是从未在屏幕上见过,而且他们与屏幕上的世界完全没有任何联系。)
相反,CALayers只是\\ in "视图中的事物。 CALayers就是视图的工作方式。
所以这两个概念完全不同。
CALayers只是"处于"视图中的事物。相比之下,CGLayers是Apple出色的"屏幕外,高性能,计算设备"。
需要明确的是,CGLayers与视图完全没有联系,也没有与视图的关联。 (当然,您可以将CGLayer粘贴到视图中,但是随后,您可以将" typography "或" animage "粘贴到视图中。印刷术和图像不是视图,CGLayers也不是视图。 )
典型示例是:
您想绘制一次复杂的东西,然后在屏幕上绘制多次。这个问题的答案就是CGLayers。您的"工作区"将是CGLayer;然后可以将其在打印机,屏幕上或其他任何东西上刷光。
要明确一点,我认为Apple应该选择其他名称...
一个好名字应该是" CGCalculationSpace。"
名称包含单词" layer"的事实使您想到了NSLayers。
重复一遍:绝对没有任何关系。 CGLayers甚至与层之间也没有模糊的关联。
完全没有连接。名称中使用字母" l a y e r "真是令人困惑-这太可惜了!
CGLayers应该被称为"工作区"或"计算范例"或类似名称。
希望它能对您有所帮助,并希望您仍然在阅读!