应用透视变换而不旋转

时间:2013-05-18 18:08:55

标签: ios objective-c core-animation catransform3d perspectives

我一直在尝试对UIView执行透视变换。我一直在使用example

但是,该示例在视图上应用旋转以及透视更改。有没有办法在没有旋转的情况下改变视图的视角?可能看起来像这样的东西:

enter image description here

我一直在尝试删除旋转,但是当我执行透视变换时不会应用。我找不到任何只是改变观点的例子。提前谢谢。

2 个答案:

答案 0 :(得分:7)

添加到David的答案:要获得图像中的输出,您必须围绕x轴(水平轴)旋转视图,以便视图矩形的上边缘显示“远离观察者”而不是下边缘,例如

CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -200;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0f * M_PI / 180.0f, 1.0f, 0.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;

答案 1 :(得分:0)

如果没有相对于您的视点的任何旋转,透视将不可见。即使您不旋转,透视仍然得到应用但它不会非常明显。

另一个显示透视的变换是沿Z平移,这使得视图看起来像是缩放的。