2012-10-23 30 views
0

我与动画挣扎,像我想要什么都找不到。我想将3D旋转应用于视图。像多维数据集旋转一样,视图应该有两个图像,并且像iPhone通知动画一样从一个旋转到另一个。我想要的动画就像这样:http://www.youtube.com/watch?v=pBgVbzBJqDc运用三维动画,查看

我甚至不认为如何做到这一点,所以任何帮助将非常感激!

在此先感谢!

回答

7

您可以通过设置一个CATransform3D与看法层上的变换应用3D动画视图。旋转看起来非常平坦,没有任何透视图,因此您应该为变换矩阵的第三行和第四列设置适当的值。

ObjC:

CATransform3D rotation = CATransform3DIdentity; 
rotation.m34 = -1.0/500.0; 
rotation = CATransform3DRotate(rotation, M_PI, 1.0, 0.0, 0.0); 
myView.layer.transform = rotation; 

斯威夫特:

var rotation = CATransform3DMakeRotation(CGFloat(M_PI), 1.0, 0.0, 0.0); 
rotation.m34 = CGFloat(-1.0/500.0) 
firstView.layer.transform = rotation; 

你会为这两种观点适宜值的角度和位置他们,他们应该是在屏幕上。

,使它看起来像一个立方体旋转,你也可以在变换矩阵旋转前翻译层立方体侧的宽度的一半(所以它不会绕中心旋转)。

rotation = CATransform3DTranslate(rotation, 0.0, 0.0, sideOfCube/2.0); 
+0

这是好的!你知道如何改变旋转方向吗? – Lukas

+0

通过将负角度动画或通过将最后一个参数从1.0更改为-1将动画轴从z更改为-z –

+0

我试过这样,但是这不会改变任何内容。难道我做错了什么? 'CATransform3D旋转= CATransform3DIdentity; rotation.m34 = -1.0/500.0; 旋转= CATransform3DRotate(旋转,M_PI,0.0,-1.0,0.0); _d3RightView.layer.transform = rotation;' – Lukas