2012-04-27 59 views
0

我必須逐一滾動圖像。以下是我正在使用的代碼使用CABasicAnimation滾動圖像陣列

_imageView是UIImageView,而imagesArray是具有對象數組的NSArray。

_imageView.animationImages=imagesArray; 
  _imageView.animationDuration=10; 
   [_imageView startAnimating]; 
     
   CABasicAnimation *scrollText; 
   scrollText=[CABasicAnimation animationWithKeyPath:@"position.x"]; 
   scrollText.duration = 10.0; 
   scrollText.speed= 3; 
   scrollText.repeatCount = 0; 
   scrollText.autoreverses = NO; 
    
   scrollText.fromValue = [NSNumber numberWithFloat:500]; 
   scrollText.toValue = [NSNumber numberWithFloat:-200.0]; 
    
   [[_imageView layer] addAnimation:scrollText forKey:@"scrollTextKey"]; 

我可以看到圖像滾動,它正在逐一改變。 但是這些圖像無論如何都在變化。我想在離開框架/屏幕時逐個更改圖像。任何人都可以提出一些想法嗎?

回答

1

我不太確定你在問什麼。我想你是說你想要創建一個動畫,其中一系列圖像從屏幕底部開始,並在屏幕頂​​部和屏幕之間動畫。

要做到這一點,您可能需要創建一個動畫,將圖像從底部的屏幕外移動到頂部的屏幕外,然後使用不同的圖像多次循環播放該動畫。像這樣的東西。

定義一個實例變量imageNumber。將其設置爲零並調用animateImage(下面)開始動畫。

的代碼可能是這個樣子:

-(void) animateImage; 
{ 
    _imageView.image = [imagesArray objectAtIndex: imageNumber]; 
    CGPoint imageCenter = _imageView.center; 
    imageCenter.y = 500; 
    _imageView.center = imageCenter; 
    [UIView animateWithDuration: 10 
    delay: 0.0 
    options: UIViewAnimationOptionCurveLinear 
    animations: 
    ^{ 
     CGPoint newImageCenter = _imageView.center; 
     newImageCenter.y = -200; 
     _imageView.center = imageCenter; 
    completion: 
    ^{ 
     imageNumber++; 
     if (imageNumber < [imagesArray count]) 
     [self animateImage]; 
    } 
    ]; 
} 
+0

感謝。這會幫助我。我已經實現了使用CALayer和CABasicAnimation。我也會嘗試這種方式,非常少LOC。再次感謝。 – Perseus 2012-05-14 04:33:49

+0

LOC =代碼行? – 2016-04-09 13:54:19