Ios UIImageView立即更改图像

Ios UIImageView立即更改图像,ios,uiimageview,Ios,Uiimageview,在我当前的实现中,我点击视图,只有在整个点击手势方法完成后图像才会改变。但是,如何在调用后立即刷新视图,以便用户在几秒钟内看到新图像并从那时起继续处理 编辑:更多信息。 我只想显示新图像约1秒。然后,应该显示旧图像。这就是为什么我希望在中使用睡眠功能的原因。我们的目标是一个棋盘游戏与卡在这里 有人吗 myUIImageViewSubclass.image = [UIImage imageNamed:@"newImage.jpg"]; [myUIImageViewSubclass refres

在我当前的实现中,我点击视图,只有在整个点击手势方法完成后图像才会改变。但是,如何在调用后立即刷新视图,以便用户在几秒钟内看到新图像并从那时起继续处理

编辑:更多信息。 我只想显示新图像约1秒。然后,应该显示旧图像。这就是为什么我希望在中使用睡眠功能的原因。我们的目标是一个棋盘游戏与卡在这里

有人吗

myUIImageViewSubclass.image = [UIImage imageNamed:@"newImage.jpg"]; 

[myUIImageViewSubclass refresh]; // <- that's what I'm looking for

sleep(1);
//do something else
myUIImageViewSubclass.image = [UIImage imageNamed:@"oldImage.jpg"];
myUIImageViewSubclass.image=[UIImage ImageName:@“newImage.jpg”];

[myUIImageViewSubclass刷新];// 在方法返回之前,显示不会更新图像,对此您无能为力,这就是显示循环的工作方式。如果您的处理需要足够长的时间在UI上产生明显的延迟,则应该将该代码分派到另一个队列

UI更新必须在主线程上完成,因此当您想要更改回图像时,需要返回到它

myUIImageViewSubclass.image = [UIImage imageNamed:@"newImage.jpg"]; 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
    sleep(1);
    //do other stuff
    dispatch_async(dispatch_get_main_queue(), ^{
        myUIImageViewSubclass.image = [UIImage imageNamed:@"oldImage.jpg"];
    });  
});  

我对这些手势检测器一无所知,但您可以在视图控制器中使用
touchesbeated:withEvent:
touchesend:withEvent
方法

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSSet *t = [event touchesForView:_myImageView];
    if([t count] > 0) {
        // Change image here
    }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    NSSet *t = [event touchesForView:_myImageView];
    if([t count] > 0) {
        // Or change image here
    }
}

不要在这些方法中使用sleep方法,否则会有延迟

我尝试了这个方法,但它没有做其他事情。请检查主要问题,因为我在那里添加了更多信息。它的工作原理是视图显示新图像,但我想在大约1秒后返回到原始视图。更改回第一个映像在队列中失败。更改回映像需要在主线程上,请参阅我的更新。