CAAnimation委托方法未调用

时间:2015-04-04 04:56:40

标签: ios objective-c caanimation

我遇到了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");
}

提前感谢任何提示或帮助!

2 个答案:

答案 0 :(得分:6)

在将动画分配给图层之前,您必须设置委托:

{{1}}

答案 1 :(得分:1)

好吧所以它转入我的子类我有一个名为duration的属性。即使它没有记录为CALayer的一部分,持续时间也是其中一个名为CAMediaTiming的协议的一部分。这些方法从未被触发,因为该属性是通过我的子类覆盖的。