我尝试这样做:有一个视图已经旋转到某个值,比如说 15 度。
想象一个旋转 15 度的视图。
接下来,我只知道,我希望这个视图从当前的旋转角度旋转到 40 度。
想象一下该视图现在如何从 15 度旋转到 40 度。
为了练习,我想用 CAKeyFrameAnimation 来做。但问题是,我所能做的就是硬指定从哪里到哪里。没有像 UIView 动画那样方便的“获取当前状态”的东西,对吧?我该怎么办?
此外,无论需要多少旋转量,我都想为该旋转指定始终 3 个关键帧。
想象一下这个视图是如何从 15 度旋转到 40 度的,使用 3 个关键帧来做到这一点
但是另一个大问题:可能会发生另一个动画必须以不同的目标启动。假设一个视图当前正在从 20 度旋转到 100 度,并且就在动画之间的某个位置,一个新动画被踢出并希望该视图转到 15 度。使用 UIView 动画很简单。如何用 CAKeyFrameAnimation 做到这一点?
基本上我希望它表现得像获取当前状态的 UIView 动画;)
CALayer* theLayer = rotatedView.layer;
CAKeyframeAnimation* animation;
animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.duration = 2;
animation.repeatCount = 1;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
animation.values = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:(10.0 / 180.0) * M_PI],
[NSNumber numberWithFloat:(20.0 / 180.0) * M_PI],
[NSNumber numberWithFloat:(30.0 / 180.0) * M_PI], nil];
[theLayer addAnimation:animation forKey:@"transform.rotation.z"];