UIImageView过渡Betwen多个图像

mmm*_*eys 2 animation uiimageview ios objective-c-blocks

我使用下面的代码在短暂的持续时间后更改UIImageView的图像.正如您所见,正在使用的图像存储在一个数组中.

问题是,无论我设置的"持续时间"或"延迟",图像视图几乎立即变为阵列中的最后一个图像.

我应该使用主线程在每次图像转换之间添加延迟吗?

////////////////////////////////////////////////////////////////

 animationCount = 0;
 imageArray =[NSMutableArray new];
 [imageArray addObject:[UIImage imageNamed:@"gauge1final.png"]];
 [imageArray addObject:[UIImage imageNamed:@"gauge2final.png"]];
 [imageArray addObject:[UIImage imageNamed:@"gauge3final.png"]];
 [imageArray addObject:[UIImage imageNamed:@"gauge4final.png"]];
 [imageArray addObject:[UIImage imageNamed:@"gauge5final.png"]];
 [self multiStageAnimate];

////////////////////////////////////////////////////////////////

-(void) multiStageAnimate{
[UIView animateWithDuration:5.0
                      delay:5.0
                    options:UIViewAnimationOptionTransitionCrossDissolve
                 animations:^
                 {
                     self.gauge.image = [imageArray objectAtIndex:animationCount];
                 }
                 completion:^(BOOL finished){

                     animationCount ++;

                     if(animationCount < imageArray.count){
                         [self multiStageAnimate];
                     }
                     else
                     {
                         animationCount = 0;
                     }
                 }];
}
Run Code Online (Sandbox Code Playgroud)

Nho*_*yen 8

UIImageView 确实有一种机制来满足你的需求.

UIImageView *imageView = [[UIImageView alloc] init];
imageView.animationImages = [NSArray arrayWithObjects:
                                           [UIImage imageNamed:@"image1"],
                                           [UIImage imageNamed:@"image2"],
                                           [UIImage imageNamed:@"image3"], nil];
imageView.animationRepeatCount = 0; // 0 means repeat without stop.
imageView.animationDuration = 1.5; // Animation duration

[imageView startAnimating];
Run Code Online (Sandbox Code Playgroud)