了解CATransform3DRotate / CATransform3DMakeRotation

时间:2016-02-17 01:45:35

标签: ios swift object calayer catransform3drotate

我正在尝试了解如何为我的UIView创建深度感知:

enter image description here

我试过这段代码:

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大小等?

谢谢你!

2 个答案:

答案 0 :(得分:2)

CATransform3DRotate期望弧度不是度数。你旋转22.5弧度,就像1200度。这可能就是你的图像倒置的原因。你可能想用这个:

let radians = 22.5 * M_PI / 180
rotationWithPerspective = CATransform3DRotate(rotationWithPerspective, radians, 0, 1, 0);

答案 1 :(得分:1)

2)

  • 每个UIView。
  • 如果您想申请子图层,可以使用sublayerTransform。 例如。 preview.layer.sublayerTransform = rotationWithPerspective

您可以在Nick Corewood的iOS核心动画 - 高级技术中阅读更多相关信息。希望有所帮助。