旋转视图边缘的 CATransform3D 深度
Posted
技术标签:
【中文标题】旋转视图边缘的 CATransform3D 深度【英文标题】:CATransform3D depth on edge of view that is rotated 【发布时间】:2011-12-18 23:07:51 【问题描述】:我有一个旋转的 UIImageView。当它旋转到与用户成 90° 的点时,很明显视图没有任何深度。就像以 90° 的角度看一张纸。
我正在使用:
// Rotate
CATransform3D rotationAndPerspectiveTransform2 = CATransform3DIdentity;
rotationAndPerspectiveTransform2.m34 = 1.0 / -400;
rotationAndPerspectiveTransform2 = CATransform3DRotate(rotationAndPerspectiveTransform2, M_PI, 1.0f, 0.0f, 0.0f);
如何为我的视图添加一些深度,以便当它达到 90° 时,它的边缘更像 3D 对象而不是平面视图?
【问题讨论】:
+1 好问题。我一直想知道,在 iBooks 中翻到 iBooks Store 时,Apple 是如何做到这一点的。 是的,我看到了这种效果的再现,但太可怕了,视角非常偏离。 就在我的脑海中,这可能需要两层。侧面图层将从 90° 变换开始并动画到 0° 或 180°,而图层上的面则以相同的速率进行完全相反的操作。将该转换与沿 x 轴的平移相结合,可能会令人信服。 这听起来确实不是万无一失的。一定有办法挤出一层。 【参考方案1】:您可以通过将它们放置在 3D 空间中来在 CA 中设置 3D 层树,每边一层。因此,一个 3D 旋转立方体将有 6 层;每张脸一个。
如果您将所有这些层设为 CATransformLayer (T) 的子层,则可以对 T 应用单个变换,例如,在 3D 空间中旋转整个结构。
没有办法“挤出”一个 CALayer。
【讨论】:
以上是关于旋转视图边缘的 CATransform3D 深度的主要内容,如果未能解决你的问题,请参考以下文章
转 CATransform3D 矩阵变换之立方体旋转实现细节
为啥使用 CATransform3D 进行这种转换会减小视图的宽度?