我一直使用 CoreGraphics 和 CoreAnimation,我了解它们各自是如何独立工作的,但不是那些必须与对方交谈的边缘情况。我也知道UIView
s 是一个很好的包装器,渲染的繁重工作CALayer
在哪里,并且增加了基于触摸的响应能力。CALayer
UIView
但是,到目前为止,我看到的所有问题都是从一侧或另一侧解决问题,而不是它们之间的相互作用,特别是 CoreGraphics 和CALayer
.
无论如何,我的问题是...
CoreGraphics 与 CALayer 有什么关系?
我的理解是,aCALayer
包装了 CoreGraphics 方法来绘制自己,但只绘制一次,并且可以使用自身的快照直到失效。但是,这些绘图方法如何与该层的子层相互作用?他们是独家的吗?
例如,当我有一个UIView
具有子视图的子视图并且我重载该drawRect
方法时会发生什么?这如何影响其子层的绘制?
将两者混合在同一个函数中甚至是一个好主意吗?
另外,我只问 iOS,我知道 Mac 是一个不同的野兽(也有那些花哨CIFilters
的混蛋!)。
先前的研究
以下是我事先研究过的一些相关问题:
- 关于quartz2d、核心图形、核心动画、核心图像的混淆。这个问题询问彼此之间的差异,并且选择的答案确实提供了,但它为每个单独的库回答,就好像另一个库不存在一样。
- Drawrect 或不 Drawrect。另一个很好的问题,但它只解决了绘制 CoreGraphics 与将问题交给 UIKit 的主题,但无论如何,选择的答案提供了部分难题。
- 使用自定义 CALayer 动画饼片。一定是我在这个主题中看到的最有价值的教程之一,它是唯一一个指导我绘制 CALayer 的教程
- CoreGraphics 和 CoreAnimation 有什么不同对提问者接受答案的速度感到非常失望,我觉得这里还有更多内容。
- 各种 WWDC 视频,但我还没有看到详细解释一般范围的视频。如果有人回复了 WWDC 视频,我会认为这是一个有效的答案。