iPhone - 捕捉分组动画的结尾

时间:2011-10-01 18:49:43

标签: iphone events animation core-animation

我为2个视图设置了动画,每个视图的CAAnimationGroup包含2个CAAnimations。它们是同时启动的(如果计算时间可以忽略不计),并且具有相同的持续时间。

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

我放了- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag委托方法,但是......我可以测试什么?听起来很简单,但我没有看到这样做的方式。

1 个答案:

答案 0 :(得分:0)

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

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...
    }
}