应用 3d 动画来查看
Posted
技术标签:
【中文标题】应用 3d 动画来查看【英文标题】:apply 3d animation to view 【发布时间】:2012-10-23 09:43:48 【问题描述】:我在动画方面苦苦挣扎,找不到任何我想要的东西。我想对视图应用 3d 旋转。就像立方体旋转一样,视图应该有两个图像,并且像 iphone 通知动画一样从一个旋转到另一个。我想要的动画是这样的:http://www.youtube.com/watch?v=pBgVbzBJqDc
我什至没有一种方法可以做到这一点,所以任何帮助都将不胜感激!
提前致谢!
【问题讨论】:
【参考方案1】:您可以通过在视图层上设置带有变换的 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);
【讨论】:
这很好!你知道如何改变旋转的方向吗? 要么动画成负角度,要么通过将最后一个参数从 1.0 更改为 -1.0 将动画轴从 z 更改为 -z 我试过这样,但这并没有改变任何东西。难道我做错了什么?CATransform3D rotation = CATransform3DIdentity; rotation.m34 = -1.0/500.0; rotation = CATransform3DRotate(rotation, M_PI, 0.0, -1.0, 0.0); _d3RightView.layer.transform = rotation;
该代码没有任何问题,但 π 的旋转对于两个方向(中途)是相同的。试试 3/4π 之类的东西,即3.0*M_PI_4
感谢所有帮助,这回答了我的问题。祝你好运!以上是关于应用 3d 动画来查看的主要内容,如果未能解决你的问题,请参考以下文章