Ios UIImageView在多个图像之间的转换

Ios UIImageView在多个图像之间的转换,ios,animation,uiimageview,objective-c-blocks,Ios,Animation,Uiimageview,Objective C Blocks,我正在使用下面的代码在短时间内更改UIImageView的图像。如您所见,正在使用的图像存储在一个数组中 问题是,无论我设置了什么“持续时间”或“延迟”,imageview几乎都会立即更改为阵列中的最后一幅图像 我应该使用主线程在每个图像转换之间添加延迟吗 //////////////////////////////////////////////////////////////// animationCount = 0; imageArray =[NSMutableArray new];

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

问题是,无论我设置了什么“持续时间”或“延迟”,imageview几乎都会立即更改为阵列中的最后一幅图像

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

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

 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;
                     }
                 }];
}
////////////////////////////////////////////////////////////////
animationCount=0;
imageArray=[NSMutableArray新建];
[imageArray addObject:[UIImage ImageName:@“gauge1final.png”];
[imageArray addObject:[UIImage ImageName:@“gauge2final.png”];
[imageArray addObject:[UIImage ImageName:@“gauge3final.png”];
[imageArray addObject:[UIImage ImageName:@“gauge4final.png”];
[imageArray addObject:[UIImage ImageName:@“gauge5final.png”];
[自我多级化];
////////////////////////////////////////////////////////////////
-(空)多级{
[UIView animateWithDuration:5.0
延迟:5.0
选项:UIViewAnimationOptionTransitionCrossSolve
动画:^
{
self.gauge.image=[imageArray objectAtIndex:animationCount];
}
完成:^(布尔完成){
animationCount++;
if(animationCount
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];

UIImageView的image属性不会设置动画。您需要做的是将2个UIImageView小部件一个接一个地放在一起。然后,您可以在每次转换时将其alpha属性从0设置为1(反之亦然)。

如果使用多个屏幕进行相同的动画,最好创建一个.plist文件,然后在项目中的任何位置使用该文件。步骤如下:

  • 首先,生成一个.plist文件file->New file->Resource->Property List

  • 按如下方式编写代码:

    ViewController.h

     @property (weak, nonatomic) IBOutlet UIImageView *dataImageView;
    
    ViewController.m

    NSDictionary *picturesDictionary = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"PhotesArray" ofType:@"plist"]];
    NSArray *imageNames = [picturesDictionary objectForKey:@"Photos"];
    NSMutableArray *images = [[NSMutableArray alloc] init];
    for (int i=0; i<[imageNames count]; i++) {
        [images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];
    }
    //Normal animation
    self.dataImageView.animationImages = images;
    self.dataImageView.animationDuration = 5.0;
    [self.dataImageView startAnimating];
    
    NSDictionary*picturesDictionary=[NSDictionary Dictionary WithContentsOfFile:[[NSBundle mainBundle]pathForResource:@“plist”类型的“photeArray]”;
    NSArray*imageNames=[picturesDictionary objectForKey:@“照片”];
    NSMutableArray*图像=[[NSMutableArray alloc]init];
    
    对于(inti=0;该方法有任何延迟属性,如UIView动画?