使用CABasicAnimation滚动图像数组

时间:2012-04-27 14:06:53

标签: ios xcode 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 个答案:

答案 0 :(得分: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];
    }
  ];
}