2010-06-30 124 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