2010-06-30 128 views
2

我正在使用核心动画在应用程序中的不同视图状态之间切换。不过,我需要找到一种在动画完成后执行不同任务的方法。我明白我可以实现一个委托方法,并使用核心动画回调

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag; 

回调,但有跟踪其中的动画结束了没有简单的方法。

我可以想到一些繁琐的解决方案,例如使用一系列标志和计数器,但是我想知道是否有更有效和实用的方法来解决此问题。

有什么想法?

回答

7

使用setValue:ForKey方法为每个动画分配一个唯一的名称。

[animation setValue:@"myUniqueName" forKey:@"name"]; 

后来,在animationDidStop方法用它来找出哪些动画停止

-(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finished { 
    if([[theAnimation valueForKey:@"name"] isEqual: @"myUniqueName"] && finished){ 
       //code 
    } 
    if([[theAnimation valueForKey:@"name"] isEqual: @"otherName"] && finished){ 
     //code 
    } 
} 
+0

完美的感谢! – 2010-07-01 22:12:53