【发布时间】:2012-12-24 04:10:39
【问题描述】:
我制作了一个视频来展示我想要完成的动画:Here it is.
请注意,视频说明了从侧面看到的动作。相机图标代表用户的 POV。它基本上是通过比例变换完成 Z 轴之间平移的模拟,同时沿 X 轴发生独立的两步 3D 旋转。
看起来和听起来都很简单,对吧?错误的。这是理想的代码,它不起作用:
[UIView animateWithDuration:0.4 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
view.transform = CGAffineTransformMakeScale(1.0, 1.0);
} completion:^(BOOL finished) {}];
[UIView animateWithDuration:0.2 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
CATransform3D rotation = CATransform3DIdentity;
rotation.m34 = 1.0 / - 1800;
rotation = CATransform3DRotate(rotation, - 20 * M_PI / 180.0f, 1, 0, 0);
view.layer.transform = rotation;
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.2 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
view.layer.transform = CATransform3DIdentity;
} completion:^(BOOL finished) {}];
}];
事实证明,如果您这样做,3D 旋转将被完全忽略。我尝试了许多其他方法,但都失败了。
一些要求:
- 比例最好是
CGAffineTransform - 缓动应如图所示,尤其是轮换时
当然,如果出现需要更改其中一些内容的解决方案,我可以适应。
提前感谢您的帮助。如果您需要澄清,请询问。
【问题讨论】:
-
我无法让您的视频正常播放(不过,通过 iPhone 浏览)。动画开始时视图的变换应该是什么?
-
非常说明性的视频(而且看起来很漂亮)。你是怎么做到的?
-
@jrturton 该视图最初的比例小于 1。
-
@DavidRönnqvist 谢谢!我使用带有动作功能的 Keynote。如果你想剖析它,这里是 .key 文件:cl.ly/LmIa
标签: ios uiview core-animation cgaffinetransform catransform3d