在xcode中为UIImage在多个图像之间切换

时间:2011-12-11 06:46:10

标签: iphone objective-c xcode cocoa-touch uiimage

一直在研究应用程序,并且一直在研究这里提供的问题,但没有找到类似的东西来解决我的问题。

我有一个包含4个图像的阵列设置,每次按顺序触摸图像时我都会尝试更改为不同的图像,然后在显示最后一个图像后返回到第一个图像。

例如:image1“touch”=> image2“touch”=> image3“touch”image4“touch”=> image1的.....

除非“触摸”,否则图像不会改变。

我的数组设置为:

    -(void) viewDidLoad {
        imageArray = [[NSArray alloc] initWithObjects:
                      [UIImage imageNamed:@"image1.png"],
                      [UIImage imageNamed:@"image2.png"],
                      [UIImage imageNamed:@"image3.png"],
                      [UIImage imageNamed:@"image4.png"],
                      nil];

然后我用以下内容显示第一张图片:

    imageView.image = [imageArray objectAtIndex:0];

然后,我可以使用以下代码在两个图像之间成功切换:

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
       UITouch *touch = [[event allTouches] anyObject];
       NSLog(@"'Touches Began");

       if ([touch view] == imageView) {
           imageView.image = [imageArray objectAtIndex:1];
           NSLog(@"Image touched and changed");
       }

现在,因为我希望imageView显示两次以上的更改,我尝试在for循环中使用if语句而没有运气:

    int touchCount = 0;
    for (touchCount = 1; touchCount < 4; touchCount++) {
        if ((touchCount < 4) && ([touch view] == imageView)) {
            imageView.image = [imageArray objectAtIndex:touchCount];
            NSLog(@"Touch Count = %d", touchCount);
        }
    }

运行时,调试器显示“Touch Count = 0”,然后崩溃并退回到主屏幕。有人可以帮忙解决这个问题吗?我的观念错了吗?

1 个答案:

答案 0 :(得分:1)

将整数作为实例变量来存储正在显示的图像。在viewDidLoad上将此值设置为0。

在图像视图上注册触摸时,递增整数。如果该值等于图像数组的计数,请将其设置回0.

将图像设置为图像数组的元素,由整数值表示:

// touch registered on image
currentImage++;
if (currentImage == [imageArray count])
    currentImage = 0;

imageView.image = [imageArray objectAtIndex:currentImage];