CALayer 的透视变换

Photo by 帕维尔·丹尼洛夫 on 不飞溅

CALayer 的透视变换

我们可以通过各种轴对 CALayer 进行 3D 转换来获得漂亮的结果。它看起来不错,但我们可以通过在转换中添加透视来使它变得更好。

通常,A CATransform3D 就像在二维空间中一样。让我们在 Y 轴上为 CALayer 设置动画,看看我在说什么:

Y axis rotation animation

这看起来不错的样子。然而,这里的问题。拿一张卡片或任何类似于我们制作动画的 CALayer 的对象,并在 Y 轴上将其旋转 180 度,同时保持它与您的眼睛平行。看到有什么不同吗?

在现实世界中,层状物体将保持平坦,我们会将其视为一个矩形。随着图层开始旋转,一个边缘会靠近我们的眼睛,我们会感觉到该边缘比另一边缘大。最后,当动画完成时,我们会再次将图层感知为一个平面矩形。

不幸的是,这并没有发生在这里。为了让它看起来像一个真实世界的对象,我们需要创建一个 CATransform3D 对象并设置其 m34 财产。

与之前的代码相同,但这次我们更改了 m34 属性。您可以使用该值来获得所需的结果。设置更高的除数将减少透视效果。

这是生成的动画:

Perspective Transformation

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/24384/17091008

posted @ 2022-09-10 08:17  哈哈哈来了啊啊啊  阅读(15)  评论(0编辑  收藏  举报