CALayer 的透视变换
CALayer 的透视变换
我们可以通过各种轴对 CALayer 进行 3D 转换来获得漂亮的结果。它看起来不错,但我们可以通过在转换中添加透视来使它变得更好。
通常,A CATransform3D 就像在二维空间中一样。让我们在 Y 轴上为 CALayer 设置动画,看看我在说什么:
Y axis rotation animation
这看起来不错的样子。然而,这里的问题。拿一张卡片或任何类似于我们制作动画的 CALayer 的对象,并在 Y 轴上将其旋转 180 度,同时保持它与您的眼睛平行。看到有什么不同吗?
在现实世界中,层状物体将保持平坦,我们会将其视为一个矩形。随着图层开始旋转,一个边缘会靠近我们的眼睛,我们会感觉到该边缘比另一边缘大。最后,当动画完成时,我们会再次将图层感知为一个平面矩形。
不幸的是,这并没有发生在这里。为了让它看起来像一个真实世界的对象,我们需要创建一个 CATransform3D 对象并设置其 m34 财产。
与之前的代码相同,但这次我们更改了 m34 属性。您可以使用该值来获得所需的结果。设置更高的除数将减少透视效果。
这是生成的动画:
Perspective Transformation
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明