【发布时间】:2010-02-02 15:10:51
【问题描述】:
我尝试这样做:有一个视图已经旋转到某个值,比如说 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"];
【问题讨论】:
标签: iphone core-animation cakeyframeanimation