我在视图之间创建了自己的过渡动画。我为两个属性(位置和变换)设置动画,以在视图之间提供类似立方体的过渡。该框架使用CABasicAnimation
,而转换使用“2阶段”CAKeyframeAnimation
。一切工作正常,除了一个小细节,我似乎无法弄清楚。在我的转换中,我在中间关键帧上应用CATransform3DScale
以创建放大/缩小效果。这工作正常,除了动画看起来有点生涩。它以线性方式在关键帧之间进行动画处理,并且我想将其解决。现在CAKeyframeAnimation
有一种方法可以使用calculationMode
来实现,但它似乎不适用于转换。我尝试将其设置为kCAAnimationCubic
和kCAAnimationCubicPaced
,但没有任何效果。用于CATransform3D动画的CAKeyframeAnimation上的平滑动画
下面是动画一个视图的变换代码(一个类似的代码块动画其它视图):
CAKeyframeAnimation *aTransform = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
CATransform3D transform1 = RotateOnX(toView, M_PI_4);
transform1 = CATransform3DScale(transform1, RotationalZoom, RotationalZoom, RotationalZoom);
[aTransform setValues:Array([NSValue valueWithCATransform3D:RotateOnX(toView, M_PI_2)],
[NSValue valueWithCATransform3D:transform1],
[NSValue valueWithCATransform3D:RotateOnX(toView, 0)])];
[toView.layer addAnimation:aTransform forKey:@"transform"];
注:RotateOnX(UIView *, CGFloat)
是用于返回一个视图的变换块由X上旋转所需的弧度。
正如你所看到的,我只对中间关键帧设置了缩放转换。此外,视图的旋转非常平滑,只是缩放似乎在改变方向时“猛拉”。
有没有人有关于如何平滑缩放/缩放的任何想法?
添加多个关键帧? – 2012-07-20 21:46:35