我已经阅读了文档和几个示例,但仍然无法理解何时确切地使用CATransformLayer。一个普通的CALayer在z = 0平面上将所有东西都压平了,但是CATransformLayer不也是这样做的吗?数学上的解释会很有帮助。
发布于 2014-02-10 08:44:46
要充分理解CALayer和CATransformLayer之间的区别,您应该阅读这个文章
这是解释如何使用CATransformLayer的最好的教程。
但简单地说,
考虑一个场景(CAlayer instance),我们在相同的X,Y坐标上创建4个平面,但使用不同的Z,并将其作为subLayers添加到scene.And中,以某种角度旋转场景。
所以,我们可能会认为,

但是看起来,

这是因为CALayer无法管理3D层次结构的深度,它只是将场景夷为平地为单一的Z级。为了纠正深度问题,我们使用CATransformLayer,它具有深度理解和基于它的呈现。
注意事项:图片摘自本文。
发布于 2014-02-10 08:40:08
CATransformLayer用于在3D中转换其子层,而不是将其压平。
与普通层不同的是,转换层不将其子层投影(即扁平)到Z=0的平面中。
如果您想对一组层一起进行转换,您可以使用它,但是您不想单独对每个层进行转换,因为您希望在一个place...kind中更改转换的灵活性,就像OpenGL中的照相机/世界/模型转换一样。
尽管如此,我从来没有机会使用一个,因为我从来没有尝试做真正的3D在LayerKit。我猜想几年前在WWDC上使用了一个堆叠演示程序,可能会有这样的示例代码。
如果我发现自己现在开始使用CATransformLayer,我会切换到SceneKit,但这还没有在iOS上。
https://stackoverflow.com/questions/21671551
复制相似问题