我为2个视图设置了动画,每个视图的CAAnimationGroup包含2个CAAnimations。它们是同时启动的(如果计算时间可以忽略不计),并且具有相同的持续时间。
如何知道两个分组动画何时完成。
我放了- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
委托方法,但是......我可以测试什么?听起来很简单,但我没有看到这样做的方式。
答案 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...
}
}