什么时候应该使用CATransformLayer?

我已经阅读了文档和几个例子,但仍然无法理解何时完全使用CATransformLayer 。 一个普通的CALayerz = 0平面上展平了所有东西,但这不是CATransformLayerfunction吗? math解释将是非常有帮助的。

要充分了解CALayer和CATransformLayer之间的区别,请阅读本文

这是解释如何使用CATransformLayer的最好的教程。

但是简单地说,
考虑一个场景( CAlayer instance ),我们在同一个X,Y坐标上创build4个平面,但是不同的Z坐标,并将其作为子subLayers添加到场景中,并以某个angular度旋转场景。

所以,我们可能期望它看起来像,
在这里输入图像说明

但是,看起来像,
在这里输入图像说明

这是因为CALayer无法pipe理3D层次结构的深度,只能将场景平铺到单个Z级别。 为了纠正这个深度问题,我们使用CATransformLayer ,它有深入的理解和基于它的渲染。

注意 :图片来自文章。

一个CATransformLayer被用来在3D中转换它的子图层,并且不会压扁它们。

与正常层不同,变换层在Z = 0时不会将其子层投影(即变平)到平面中。

如果你想在一组图层上进行变换,但是你不想单独做每个单独的变换,因为你想要在一个地方改变变换的灵活性……有点像在OpenGL中的相机/世界/模型转换。

这就是说,我从来没有机会使用它,因为我从来没有试图在LayerKit中做真正的3D。 我假设几年前在WWDC上使用了一个堆栈演示,可能有代码示例。

如果我发现自己现在开始使用CATransformLayer,我会切换到SceneKit,但那还不是iOS。