animationDidStop方法的多个CAAnimations?

Sim*_*iwi 20 animation delegates core-animation ios

我知道你必须使用这个方法来获取动画完成时的委托方法:

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {
Run Code Online (Sandbox Code Playgroud)

问题是,我如何区分多个CAAnimations,如2个或更多?

我用谷歌搜索了这个,但我没有找到任何有用的东西.

请与我分享你是如何完成这一切的!

谢谢!

ber*_*ium 50

您可以为CAAnimation实例设置键/值对象,如下所示:

CABasicAnimation *theAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
[theAnimation setValue:@"animation1" forKey:@"id"]; 
theAnimation.delegate = self;

CABasicAnimation *theAnimation2 = [CABasicAnimation animationWithKeyPath:@"opacity"];
[theAnimation2 setValue:@"animation2" forKey:@"id"];    
theAnimation2.delegate = self;
Run Code Online (Sandbox Code Playgroud)

检查委托方法中调用了哪一个:

- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
    if([[anim valueForKey:@"id"] isEqual:@"animation1"]) {
        NSLog(@"animation1");
    }
    if([[anim valueForKey:@"id"] isEqual:@"animation2"]) {
        NSLog(@"animation2");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @toblerpwn将动画添加到图层时,该动画将复制到该图层而不是直接引用.这就是你不能在动画上使用==运算符的原因. (3认同)