2

我试图了解如何创建对我UIView这样的深度感知:

在此处输入图像描述

我试过这段代码:

var rotationWithPerspective = CATransform3DIdentity;
rotationWithPerspective.m34 = -1.0/500.0/2/2
rotationWithPerspective = CATransform3DRotate(rotationWithPerspective, 22.5, 0, 1, 0);
preview.layer.transform = rotationWithPerspective

这会产生透视。然而,它出于某种原因翻转了视图。

1)如何避免转换后的“翻转”?

2) 变换产生的“透视深度”是否与每个给定的 相同UIView,还是取决于UIView大小等?

谢谢你!

4

2 回答 2

2

CATransform3DRotate期望弧度而不是度数。你旋转了 22.5 弧度,相当于 1200 度。这可能就是您的图像反转的原因。你可能想用这个:

let radians = 22.5 * M_PI / 180
rotationWithPerspective = CATransform3DRotate(rotationWithPerspective, radians, 0, 1, 0);
于 2016-02-17T03:55:56.220 回答
1

对于 2)

  • 这是每个 UIView。
  • 如果你想应用到子层,你可以使用 sublayerTransform。例如 preview.layer.sublayerTransform = rotationWithPerspective

您可以在 Nick Lockwood 的 iOS Core Animation - Advanced Techniques 中了解更多信息。希望有所帮助。

于 2017-06-13T13:07:57.557 回答