2010-09-13 24 views
1

我有一個完美的第一次調用的動畫。但是,如果我想再次使用相同的代碼對同一圖層進行動畫處理,則會立即完成,並在flagNO的代理上調用animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag圖層動畫第一次正常工作,但不在第二次相同的調用

這裏是添加動畫代碼:

imageView.hidden = NO; 

    CAKeyframeAnimation* animationOpacity = 
    [CAKeyframeAnimation animationWithKeyPath:@"opacity"]; 
    ... 

    animationOpacity.duration = 2.0; 
    animationOpacity.removedOnCompletion = YES; 
    animationOpacity.delegate = self; 

    [imageView.layer addAnimation:animationOpacity forKey:@"someKey"]; 

,這是代表行動:

-(void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag { 
    imageView.hidden = YES; 
} 

BTW,最初imageView在XIB可見。

回答

0

是否在第二次調用之前再次添加動畫?如果你不是,那麼你應該設置removedOnCompletion = NO

animationOpacity.removedOnCompletion = NO; 
+0

代碼行爲與removedOncompletion'YES'或'NO'相同。我再次添加動畫,運行完全相同的代碼,包括'addAnimation:...' – user199092 2010-09-13 05:16:17

1

可謂是從父的viewWillApear設置回調view.hidden = YES並調用動畫代碼的組合。一旦我將動畫代碼調用轉換爲父代的viewDidApear,事情就會像預期的那樣開始。

相關問題