iPhone-捕捉分组动画的结尾

iPhone-捕捉分组动画的结尾,iphone,events,animation,core-animation,Iphone,Events,Animation,Core Animation,我制作了两个视图的动画,每个视图都有一个包含2个动画的CAanimation组。它们同时启动(如果计算时间可以忽略不计),并且具有相同的持续时间 如何才能知道两个分组动画何时完成 我将-(void)animationDidStop:(CAAnimation*)animation finished:(BOOL)标志委托方法,但是。。。我可以测试什么?听起来很简单,但我不知道怎么做。您可以使用两个变量来跟踪动画是否已完成: BOOL firstAnimFinished; BOOL secondAni

我制作了两个视图的动画,每个视图都有一个包含2个动画的CAanimation组。它们同时启动(如果计算时间可以忽略不计),并且具有相同的持续时间

如何才能知道两个分组动画何时完成


我将
-(void)animationDidStop:(CAAnimation*)animation finished:(BOOL)标志
委托方法,但是。。。我可以测试什么?听起来很简单,但我不知道怎么做。

您可以使用两个变量来跟踪动画是否已完成:

BOOL firstAnimFinished;
BOOL secondAnimFinished;
然后在animationDidStop委托中,检查哪个动画正在调用该方法,并适当设置标志。问题是,当动画调用代理时,您需要添加一个键来标识动画(您创建的动画将不是调用代理的动画,而代理是另一个问题/问题的主题)。例如:

// when you create the animations
[firstAnmim setValue: @"FirstAnim" ForKey: @"Name"];
[secondAnmim setValue: @"SecondAnim" ForKey: @"Name"];

// Your delegate
- (void)animationDidStop:(CAAnimation*)theAnimation finished:(BOOL)flag {
    NSString* name = [theAnimation valueForKey: @"Name"];
    if ([name isEqualToString: @"FirstAnim"]) {
        firstAnimFinished = YES;
    } else if ([name isEqualToString: @"SecondAnim"]) {
        secondAnimFinished = YES;
    }
    if (firstAnimFinished && secondAnimFinished) {
        // ALL DONE...
    }
}

好的,但是CAAnimationGroup呢?CAAnimation和CAAnimation组没有任何可以使用的硬属性???那么
-(void)addAnimation:(CAAnimation*)anim forKey:(NSString*)key中使用的键呢?
否,CAAnimation/Group不提供可以用作动画唯一id的键。很遗憾,您必须创建自己的。addAnimation中使用的关键点不是动画中的关键点,而是层中的关键点,因此您无法使用它来确定什么动画称为animationDidStop(即,如果我调用[addAnimation:anim forKey:@“AnAnimation”],则层现在有一个称为@“AnAnimation”的关键点但是动画是不变的。您可以像命名普通动画一样命名分组动画。在上面的示例中,假设firstAnim和secondAnim是GroupedAnimation的实例