我们什么时候应该使用CATransformLayer?

Evi*_*oer 6 core-animation objective-c ios

我已经阅读了文档和几个例子,但仍然无法理解何时使用一个CATransformLayer.正常情况CALayer下,z = 0平面上的所有东西都会变平,但这不是什么CATransformLayer意思吗?数学解释会非常有用.

san*_*thu 11

要完全了解CALayer和CATransformLayer之间的区别,您应该阅读本文

这是解释如何使用的最佳教程CATransformLayer.

但简单地说,
考虑一个场景(CAlayer instance),我们在相同的X,Y坐标处创建4个平面,但是使用不同的Z并将其添加subLayers到场景中.并将场景旋转一定角度.

所以,我们可能会期待它看起来像,
在此输入图像描述

但它看起来像,
在此输入图像描述

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

注意:图像来自文章.


Wil*_*ley 5

CATransformLayer用于在3D中转换其子图层,并且不会将它们展平.

与普通图层不同,变换图层不会将其子图层投影(即展平)到Z = 0的平面中.

如果你想在一组图层上进行变换,你可以使用它,但是你不想单独对它们进行单独处理,因为你想要在一个地方改变变换的灵活性......有点像OpenGL中的相机/世界/模型变换.

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

如果我发现自己现在开始使用CATransformLayer,我会切换到SceneKit,但这还不在iOS上.