在我的应用程序中,我有一个NSMutableArray
,其中包含UIImage
。
我想在数组中显示第一个UIImage
三秒钟,然后再显示
显示第二张图片。
当我按下UIButton
时,所有这一切都会发生。
以下是我的代码:
[testImageView setImage:[arr objectAtIndex:0]] ;
sleep(3) ;
[testImageView setImage:[arr objectAtIndex:1]] ;
testImageView是我屏幕上的UIImageView
对象。
当我运行此代码时,我的按钮会保持按住三秒钟,并且只显示第二张图像。
我该怎么办?
答案 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]];
}
然后您可以使用以下方法之一来执行该方法:
使用NSTimer
:
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(setImage) userInfo:nil repeats:NO]
使用performSelector
的{{1}}方法:
NSObject
使用 Grand Central Dispatch 。
[self performSelector:@selector(setImage) withObject:nil afterDelay:3.0];
上述任何方式都有效。
在以下链接中阅读有关并发的更多信息: