Iphone 将三维动画应用于视图

Iphone 将三维动画应用于视图,iphone,objective-c,ios,cocoa-touch,core-animation,Iphone,Objective C,Ios,Cocoa Touch,Core Animation,我正在努力制作动画,找不到任何我想要的东西。我想对视图应用三维旋转。像立方体旋转一样,视图应该有两个图像,并像iphone通知动画一样从一个图像旋转到另一个图像。我想要的动画如下所示: 我甚至不认为有一种方法可以做到这一点,所以任何帮助都将不胜感激 提前谢谢 通过在“视图”层上设置带有变换的CATTransformM3D,可以将3D动画应用于视图。旋转看起来非常平坦,没有任何透视,因此您应该为变换矩阵的第三行和第四列设置适当的值 rotation = CATransform3DTranslate

我正在努力制作动画,找不到任何我想要的东西。我想对视图应用三维旋转。像立方体旋转一样,视图应该有两个图像,并像iphone通知动画一样从一个图像旋转到另一个图像。我想要的动画如下所示:

我甚至不认为有一种方法可以做到这一点,所以任何帮助都将不胜感激


提前谢谢

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

rotation = CATransform3DTranslate(rotation, 0.0, 0.0, sideOfCube/2.0);
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;
Swift:

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);

这太好了!你知道如何改变旋转的方向吗?通过将最后一个参数从1.0更改为-1.0,将动画轴从z更改为-z,或者将动画轴从负角度更改为-1.0。我尝试过这样做,但这不会改变任何东西。我做错什么了吗<代码>CATTransferM3D旋转=CATTransferM3D实体;旋转角度m34=-1.0/500.0;旋转=CATTransform3drotate(旋转,μPI,0.0,-1.0,0.0)_d3RightView.layer.transform=旋转该代码没有任何错误,但π的旋转在两个方向(中间)是相同的。试试3/4π之类的东西,即
3.0*M_PI_4
谢谢你的帮助,这回答了我的问题。祝你好运