Object-c Как анимировать разные наборы изображений в разное время один за другим (iphone) - PullRequest
2 голосов
/ 03 ноября 2011

мне нужно анимировать 10 наборов изображений (10 массивов изображений) один за другим каждый набор будет анимирован по-разному. я попытался сделать это с UIImageView, как это:

[myImageView1 setAnimationImages:imagesSet1];
[myImageView1 setAnimationRepeatCount:0];
[myImageView1 setAnimationDuration:2];
[myImageView1 startAnimation];


[myImageView1 setAnimationImages:imagesSet2];
[myImageView1 setAnimationRepeatCount:0];
[myImageView1 setAnimationDuration:5];
[myImageView1 startAnimation];

но это не работает, он показывает последние изображения.

Ответы [ 4 ]

3 голосов
/ 04 ноября 2011

Попробуйте этот код:

 NSArray *array1=[[NSArray alloc] initWithObjects:[UIImage imageNamed:@"ballImg1.png"],[UIImage imageNamed:@"ballImg3.png"],[UIImage imageNamed:@"ballImg4.png"],[UIImage imageNamed:@"ballImg5.png"],nil];

 NSArray *array2=[[NSArray alloc] initWithObjects:[UIImage imageNamed:@"ballAniImg1.png"],[UIImage imageNamed:@"ballAniImg3.png"],[UIImage imageNamed:@"ballAniImg4.png"],[UIImage imageNamed:@"ballAniImg5.png"],nil];

 NSArray *array3=[[NSArray alloc] initWithObjects:[UIImage imageNamed:@"ballRotImg1.png"],[UIImage imageNamed:@"ballRotImg3.png"],[UIImage imageNamed:@"ballRotImg4.png"],[UIImage imageNamed:@"ballRotImg5.png"],nil];

array4=[[NSArray alloc] initWithObjects:array1,array2,array3,nil];

 i1=0;   
 [self performSelector:@selector(animation1:) withObject:[NSNumber numberWithFloat:2.0] afterDelay:0];
 i=0;



 -(void)animation1:(NSNumber*)k
{
if(i1<[array4 count])
{
int m1=[k floatValue];
NSArray *arr1= [array4 objectAtIndex:i1];
myImageView1.animationImages=arr1;
myImageView1.animationDuration=m1;
myImageView1.animationRepeatCount=1;
[myImageView1 startAnimating];
i1++;
    [self performSelector:@selector(animation1:) withObject:[NSNumber numberWithFloat:2.0] afterDelay:3.0];

}
}
2 голосов
/ 05 июля 2013

Попробуйте этот код, намного проще, так что используйте его и наслаждайтесь

animatedImageView = [[UIImageView alloc] initWithFrame:self.view.bounds];

animatedImageView.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"],nil];
animatedImageView.animationDuration = 20.0f;
animatedImageView.animationRepeatCount = 0;
[animatedImageView startAnimating];
1 голос
/ 03 ноября 2011

Попробуйте использовать блоки

-(void)showImage1 {
    [UIView animateWithDuration:2.0
                          delay:0.0 
                        options:UIViewAnimationOptionTransitionFlipFromLeft 
                     animations:^{
                                     [myImageView1 setImage:image1];
                                 };
                     completion:^(BOOL finished){
                                       [self showImage2];
                                }];
}

-(void)showImage2 {
    [UIView animateWithDuration:5.0
                          delay:0.0 
                        options:UIViewAnimationOptionTransitionFlipFromLeft 
                     animations:^{
                                     [myImageView1 setImage:image2];
                                 };
                     completion:^(BOOL finished){
                                       ...
                                }];
}
0 голосов
/ 03 ноября 2011
    NSMutableArray *imageArray = [[NSMutableArray alloc] init];

    for (int i = 0; i < 6; i++)
    {
        [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"ball%d.png", i]]];
        UIImageView *animatedImages = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,100,100)];
        animatedImages.animationImages = [NSArray arrayWithArray:imageArray];
        animatedImages.animationDuration = 1.0;
        animatedImages.animationRepeatCount = 0;
        [animatedImages startAnimating];
        [myview addSubview:animatedImages];  
        [animatedImages release];

     }
...