我在CABasicAnimation方面遇到了一些问题。这与这篇文章类似:CABasicAnimation旋转返回原始位置
所以,我有一个UIImageView,可以在touchMove中旋转。在touchEnd中调用一个方法来执行“惯性动画”:
-(void)animationRotation: (float)beginValue
{
CABasicAnimation *anim;
anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
anim.duration = 0.5;
anim.repeatCount = 1;
anim.fillMode = kCAFillModeForwards;
anim.fromValue = [NSNumber numberWithFloat:beginValue];
[anim setDelegate:self];
anim.toValue = [NSNumber numberWithFloat:(360*M_PI/180 + beginValue)];
[appleView.layer addAnimation:anim forKey:@"transform"];
CGAffineTransform rot = CGAffineTransformMakeRotation(360*M_PI/180 + beginValue);
appleView.transform = rot;
}
这个动画本来是正常工作的,但如果我在动画旋转结束之前调用touchBegan,旋转角度就会回到初始值。我需要获取当前旋转角度。为了进行实验,我声明了一个方法。
-(vod) animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
NSLog(@"Animation finished!");
}
看起来似乎工作正常。但我不知道如何获取我的UIImageView在animationDidStop中的旋转角度值或CGAffineTransform值。这是可行的吗?谢谢。