按顺序更改UIImageView中的图像

时间:2012-05-09 19:10:48

标签: iphone objective-c ios

我想制作像动画一样的东西。

我有四个UIImageView(名称:IW1,IW2,IW3,IW4) 我希望在image1上的IW1和image2上的IW1中更改图像,之后在image1上的IW2中更改图像,然后在image2上更改图像,之后在image1和下一个image2上的IW3中更改图像,之后在image1上的IW4中更改图像,然后在image2上更改图像

不幸的是,当我尝试这样做时,我唯一能做的就是同时更改所有UIImageViews中的图像,但我想按顺序执行。

有人会帮忙吗?

3 个答案:

答案 0 :(得分:1)

我会这样做

标题界面

int j;
int i;

UIImageView *imgV1;
UIImageView *imgV2;
UIImageView *imgV3;
UIImageView *imgV4;

UIImage *img1;
UIImage *img2;

NSArray *views;
NSArray *imgs;

<强>实施

- (void)viewDidLoad{
    i=0;
    j=0;
    views = [[NSArray alloc] initWithObjects:imgV1, imgV2, imgV3, imgV4, nil];
    imgs = [[NSArray alloc] initWithObjects:img1, img2, nil];
    [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(changeImage) userInfo:nil repeats:YES];
}


-(void)changeImage{
    UIImageView *imageView = [views objectAtIndex:j];
    UIImage *image = [imgs objectAtIndex:i];
    imageView.image = image;
    i++;
    if(i==2){
        i=0;
        j++;
        if(j==4)
            j=0;
    }
}

希望这有帮助(我没试过)

答案 1 :(得分:1)

- (void)runSwitchImages
{
    [UIView animateWithDuration:2 delay:2 options:UIViewAnimationCurveEaseInOut animations:^{
        //Animate Image Change Here
    } completion:^(BOOL finished) {
        //When The Image is done animating it will go here

    }];
}

您可以使用类似的内容来进行系列更改。您可以为每个图像创建另一个这些函数,并让它们串行调用。或者将函数更改为递归。

如果您希望它继续更改我们NSTimer来调用该函数。

答案 2 :(得分:0)

在某处调用

[self performSelector:@selector(changeImage:) withObject:yourImageView afterDelay:1]

将在1秒延迟后调用此方法

-(void)changeImage:(UIImageView *)yourImageView
{
     yourImageView.image = yourImage;
}