我在CALayer
上有一个类别,用于添加和删除动画。我有一个完美的旋转动画,我有一个-endRotating
方法。以下是我实施它的方法:
CAAnimation *anim = [self animationForKey:ROTATION_KEY];
if(anim){
[self removeAnimationForKey:anim];
}
anim
是方法中CABasicAnimation
的一个实例,这是正确的。但是,[self removeAnimationForKey:anim];
会将无法识别的选择器发送到我的动画实例:
-[CABasicAnimation length]: unrecognized selector sent to instance 0xba2bf40
这是UIKit中的错误,还是我做错了什么?
这是我的动画供参考:
-(void)beginRotatingWithAngularVelocity:(float)velocity{
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
rotationAnimation.fillMode = kCAFillModeForwards;
rotationAnimation.removedOnCompletion = YES;
rotationAnimation.repeatCount = 999999;
rotationAnimation.duration = velocity;
rotationAnimation.cumulative = YES;
rotationAnimation.fromValue = [NSNumber numberWithFloat:0];
rotationAnimation.toValue = [NSNumber numberWithFloat:M_PI * 2];
[self addAnimation:rotationAnimation forKey:ROTATION_KEY];
}
为什么remove方法试图访问我动画的length
?
答案 0 :(得分:2)
这是removeAnimationForKey:
- (void)removeAnimationForKey:(NSString *)key
正如您所看到的,它需要一个NSString
对象(在您的情况下可能是ROTATION_KEY
),而不是CAAnimation
。