循环遍历一系列图像

时间:2014-12-13 13:52:57

标签: ios objective-c

我想循环浏览一系列图像,并通过单击一个按钮逐个显示每个图像。

这是我的代码。

这是在viewDidLoad方法中:

    arrayImg = [[NSArray alloc]initWithObjects:
            [UIImage imageNamed:@"samsung_logo_small.jpg"],
            [UIImage imageNamed:@"Small_logo_splash.png"],
            [UIImage imageNamed:@"Red_logos_small.png"],
            [UIImage imageNamed:@"li-logo-small-drshdw.gif"],
            nil];

这是我在循环浏览图像的按钮

- (IBAction)btn:(id)sender {
for (int i = 0 ; i < [arrayImg count]; i++) {
    [img setImage:[arrayImg objectAtIndex:i]];
}

}

问题在于它只显示最后一张图像,而不是所有图像。

我在这里做错了什么?

我发现了2个这样的问题,但找不到答案。

4 个答案:

答案 0 :(得分:3)

将以下内容添加到YourClass.m文件中:

@interface YourClass() {
    int variableName;
}

@end

viewDidLoad中将variableName初始化为0

- (IBAction)btn:(id)sender 
{
    if (variableName == arrayImg.count)
    {
        variableName = 0;
    }
    [img setImage:[arrayImg objectAtIndex:classVariable]];
    variableName++
}

答案 1 :(得分:2)

如果你想一次显示一个图像,那么为什么要循环?你可以这样做:

 static int index;

- (IBAction)btn:(id)sender {

  [img setImage:[arrayImg objectAtIndex:index]];
   index = index == arrayImg.count - 1 ? 0 : index + 1;
}

答案 2 :(得分:1)

viewDidLoad中,再添加一行:

[buttonName setTag:0];

此处更改btn事件:

- (IBAction)btn:(UIButton *)sender {

   [img setImage: [arrayImg objectAtIndex: [sender tag]]];

   [sender setTag: [sender tag]+1];

   if ([sender tag] > [arrayImg count]) {
     [sender setTag: 0];
   }
}

这也可以帮助你进行内存管理,因为这里没有其他额外的标志变量来保存你的整数值,而你的UIButton对象只能保存。

希望这有助于您达到您的要求。

答案 3 :(得分:0)

据我所知,您只需点击一下即可遍历所有图像。

更好的方法可能是在单击后显示图像,而不是循环只是将表示索引值的变量增加1.这样每次单击后都会显示下一个图像。

另一种方法是使用计时器。

[NSTimer scheduledTimerWithTimeInterval:2.0
                                 target:self
                               selector:@selector(displayNextImage:)
                               userInfo:nil
                                repeats:YES];