2012-09-06 35 views
-3

我有幾個子視圖響應相同的動畫。我想在動畫完成後移除子視圖(animationDidStop)。是一種方法來檢測animationDidStop中動畫的子視圖?ios如何在動畫完成後刪除子視圖(animationDidStop)

在這種特殊情況下:

if ([animationID isEqualToString:@"myAnimation"]) 
    view.removeSubView:myView; 

如何判斷是正確的?子視圖因爲我前面說過的一些子視圖以同樣的動畫響應。

回答

3

您可以命名您的動畫(每個視圖都需要一個獨特的動畫名稱):

[UIView beginAnimations:@"myAnimation" context:nil]; 
myView.alpha = 1.0f;  // or whatever property you're animating... 
[UIView commitAnimations]; 

,然後在

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(id)context 
{ 
    if ([finished boolValue]) 
    { 
     if ([animationID isEqualToString:@"myAnimation"]) 
      [myView removeFromSuperview]; 
    } 
} 

或檢索這個名字更好,但使用的iOS4 +塊動畫方法及其完成處理程序,您將能夠更完整地引用完成處理程序中正在動畫的視圖。例如

[UIView animateWithDuration:0.4f animations:^ 
{ 
    myView.alpha=1.0f; 
} 
completion:^(BOOL finished) 
{ 
    [myView removeFromSuperview]; 
}]; 
+0

我推薦使用基於塊的動畫和完成方法。 –