2010-03-20 53 views
3

我使用下面的代碼來做一個字符串滾動,但如何停止動畫?如何使用beginAnimations後停止動畫?

[UIView beginAnimations:@"ruucc" context:NULL]; 
[UIView setAnimationDuration:12.8f]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationRepeatAutoreverses:NO]; 
[UIView setAnimationRepeatCount:999999]; 

frame = label1.frame; 
frame.origin.x = -12; 
label1.frame = frame; 
[UIView commitAnimations]; 
+0

請參閱http://stackoverflow.com/questions/554997/cancel-a-uiview-animation – 2010-03-20 02:41:19

回答

1
- (void)doAnimation 
{ 
    [UIView animateWithDuration:12.8f 
          delay: 0.0 
         options: UIViewAnimationCurveLinear 
        animations:^{ 
         frame = label1.frame; 
         frame.origin.x = -12; 
         label1.frame = frame; 
        } 
        completion:^(BOOL finished){ 
         if(keepAnimating) { 
          [self doAnimation]; 
         } 
        }]; 
} 

在報頭:

BOOL keepAnimating; 

要啓動動畫:

keepAnimating = YES; 
[self doAnimation]; 

要停止動畫:

keepAnimating = NO; 

此解決方案在UIView上使用基於塊的動畫方法。關於舊的一套動畫方法([UIView beginAnimations]等),UIView類的參考狀態如下:

在iOS 4及更高版本中不鼓勵使用本節中的方法。改爲使用基於塊的動畫方法。