【发布时间】:2015-06-09 04:11:31
【问题描述】:
我在使用 iOS CABasicAnimation 时遇到问题。无论我做什么,我都无法触发 animationDidStart: 和 animationDidStop:finished: 方法。我的类是 CAShapeLayer 的子类,并在其中执行动画:
- (void)start{
[self removeAllAnimations];
CABasicAnimation *pathAnimation = [self makeAnimationForKey:@"strokeEnd"];
[self addAnimation:pathAnimation forKey:@"strokeEnd"];
}
- (CABasicAnimation *)makeAnimationForKey:(NSString *)key {
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:key];
anim.fromValue = [NSNumber numberWithFloat:0.f];
anim.toValue = [NSNumber numberWithFloat:1.f];
anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
anim.duration = self.duration;
anim.delegate = self;
return anim;
}
- (void)animationDidStart:(CAAnimation *)anim{
NSLog(@"HERE START");
}
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
NSLog(@"HERE STOP");
}
任何提示或帮助将不胜感激,在此先感谢!
【问题讨论】:
-
请记住,图层在动画时会被克隆,因此使用这样的子类可能无法获得所需的效果。
-
感谢大卫的提醒,我一定会记住的。
-
请注意
CAAnimation的delegate很强大,因此您可能需要将其设置为nil以避免保留循环!
标签: ios objective-c caanimation