如何在数组中显示图像,在每个图像之间暂停?

时间:2014-04-02 18:15:25

标签: ios iphone objective-c nsmutablearray sleep

在我的应用程序中,我有一个NSMutableArray,其中包含UIImage

我想在数组中显示第一个UIImage三秒钟,然后再显示 显示第二张图片。

当我按下UIButton时,所有这一切都会发生。

以下是我的代码:

[testImageView setImage:[arr objectAtIndex:0]] ;
sleep(3) ;
[testImageView setImage:[arr objectAtIndex:1]] ;

testImageView是我屏幕上的UIImageView对象。

当我运行此代码时,我的按钮会保持按住三秒钟,并且只显示第二张图像。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

尝试使用UIImageView

中最隐蔽的方法之一
UIImageView *myImageView = [[UIImageView alloc] initWithFrame:...];

myImageView.animationImages   = images;
myImageView.animationDuration = 3.0 * images.count;

[self.view addSubview:myImageView];

然后,当你想开始制作动画时

[myImageView startAnimating];

我不知道你打算用这个做什么,但3秒可能太多了。如果你正在做某种演示,那么这种方法可能不是很好,因为没有简单的方法可以回去。

答案 1 :(得分:1)

按钮保持按下的原因是,因为你在主线程中睡了3秒,这意味着在线程返回之前,你的应用程序(至少是用户界面)不会发生任何事情。活性

有多种方法可以实现您的目标,但您必须在后台线程上放置一个计时器。我建议你先把代码放在另一个方法中设置第二个图像,然后将数组放到属性中。

- (void)setImage
{
    [testImageView setImage:self.yourArray[1]];
}

然后您可以使用以下方法之一来执行该方法:

  1. 使用NSTimer

    [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(setImage) userInfo:nil repeats:NO]
    
  2. 使用performSelector的{​​{1}}方法:

    NSObject
  3. 使用 Grand Central Dispatch

    [self performSelector:@selector(setImage) withObject:nil afterDelay:3.0];
    
  4. 上述任何方式都有效。

    在以下链接中阅读有关并发的更多信息: