2011-03-01 148 views
4

我做了以下這樣一個UIImageView的動畫:暫停的動畫的UIImageView

//////progressbar start 
progressbar.animationImages = [NSArray arrayWithObjects: 
           [UIImage imageNamed:@"1.png"], 
           [UIImage imageNamed:@"2.png"], 
           [UIImage imageNamed:@"3.png"], 
           [UIImage imageNamed:@"4.png"], 
           [UIImage imageNamed:@"5.png"], 
           [UIImage imageNamed:@"6.png"], 
           [UIImage imageNamed:@"7.png"], 
           [UIImage imageNamed:@"8.png"], 
           [UIImage imageNamed:@"9.png"], 
           [UIImage imageNamed:@"10.png"], 
           [UIImage imageNamed:@"11.png"], 
           [UIImage imageNamed:@"12.png"], 
           [UIImage imageNamed:@"13.png"], 
           [UIImage imageNamed:@"14.png"], 
           [UIImage imageNamed:@"15.png"], 
           [UIImage imageNamed:@"16.png"], 
           [UIImage imageNamed:@"17.png"], 
           [UIImage imageNamed:@"18.png"], 
           [UIImage imageNamed:@"19.png"], 
           [UIImage imageNamed:@"20.png"], 
           [UIImage imageNamed:@"21.png"], 
           [UIImage imageNamed:@"22.png"], 
           [UIImage imageNamed:@"23.png"], 
           [UIImage imageNamed:@"24.png"], 
           [UIImage imageNamed:@"25.png"], 
           [UIImage imageNamed:@"26.png"], 
           [UIImage imageNamed:@"27.png"], 
           [UIImage imageNamed:@"28.png"], 
           [UIImage imageNamed:@"29.png"], 
           [UIImage imageNamed:@"30.png"], 
           [UIImage imageNamed:@"31.png"], 
           [UIImage imageNamed:@"32.png"], 
           [UIImage imageNamed:@"33.png"], 
           [UIImage imageNamed:@"34.png"], 
           [UIImage imageNamed:@"35.png"], 
           [UIImage imageNamed:@"36.png"], 
           [UIImage imageNamed:@"37.png"], 
           [UIImage imageNamed:@"38.png"], 
           [UIImage imageNamed:@"39.png"], 
           [UIImage imageNamed:@"40.png"], 
           [UIImage imageNamed:@"41.png"], 
           [UIImage imageNamed:@"42.png"], nil]; 
progressbar.animationDuration = 5.00; 
progressbar.animationRepeatCount = 0; 
[progressbar startAnimating]; 

現在我需要一旦用戶點擊該按鈕的圖像將無法運行動畫並會留在當前圖像上暫停它如此。

我得到這個代碼從網上到暫停,

UIView *viewBeingAnimated = //your view that is being animated 
viewBeingAnimated.frame = [[viewBeingAnimated.layer presentationLayer] frame]; 
[viewBeingAnimated.layer removeAllAnimations]; 
//when user unpauses, create new animation from current position. 

會將該代碼的工作?那麼我怎樣才能從當前圖像中取消暫停呢?

回答

4

我也試過使用這段代碼,但它沒有起作用。

相反,您可以使用Apple提供的代碼在以下鏈接中暫停和恢復您的動畫。

http://developer.apple.com/library/ios/#qa/qa1673/_index.html

爲了讓CALayer的傳遞給pauseLayer功能,可以使用下面的代碼。

CALayer *player = progressbar.layer; 
[self pauseLayer:player]; 
4

這裏是我的方法:

- (IBAction)play:(id)sender 
{ 
pauseAnimation = FALSE; 
[self performSelector:@selector(changeImages) withObject:nil afterDelay:0]; 
[self.pauseButton setHidden:NO]; 
[self.playButton setHidden:YES]; 

} 

- (IBAction)pause:(id)sender 
{ 
pauseAnimation = TRUE; 
[self.pauseButton setHidden:YES]; 
[self.playButton setHidden:NO]; 
} 
- (void)changeImages 
{ 
if (currentFrame == self.selectedAttachment.noOfFrames) 
{ 

    currentFrame = -1; 
    return; //Don't use return, if a looped playing is required. 
} 
if (currentFrame == -1) { 
    currentFrame = 0; 
} 
if (pauseAnimation) 
{ 
    return; 
} 

[self performSelector:@selector(changeImages) withObject:nil afterDelay:.5]; 

imageView.image = [frameArray objectAtIndex:currentFrame]; 
currentFrame ++;  
} 

即使你可以在兩者之間改變圖片...

- (IBAction)replaceImage:(id)sender 
{ 
UIImage *replaceImage = [[UIImage alloc]init]; 
replaceImage = [UIImage imageNamed:@"Bluehound.gif"]; 
int i = arc4random()%25; 
[frameArray replaceObjectAtIndex:i withObject:replaceImage]; 
} 

感謝所有。現在,您可以播放,暫停,更換圖片等 *有一個bug:再次播放按鈕攻升速...:P

-1

請嘗試stopAnimating

[progressBar stopAnimating];