我遇到了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");
}
提前感谢任何提示或帮助!
答案 0 :(得分:6)
在将动画分配给图层之前,您必须设置委托:
{{1}}
答案 1 :(得分:1)
好吧所以它转入我的子类我有一个名为duration的属性。即使它没有记录为CALayer
的一部分,持续时间也是其中一个名为CAMediaTiming
的协议的一部分。这些方法从未被触发,因为该属性是通过我的子类覆盖的。