在我当前的实现中,我点击 View ,并且图像仅在整个点击手势方法完成后才发生变化。但是,如何在调用后立即刷新 View ,以便用户看到新图像几秒钟,然后继续处理。
编辑:更多信息。 我只想显示新图像约 1 秒。然后,应该显示旧图像。这就是为什么我想要 sleep 功能的原因。我们的目标是在这里玩一款带有纸牌的棋盘游戏...
有人有建议吗?
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"];
最佳答案
在该方法返回之前,显示不会更新图像,并且您对此无能为力,这就是显示循环的工作原理。如果您的处理时间足够长,足以在 UI 上产生明显的延迟,您应该将该代码分派(dispatch)到另一个队列。
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"];
});
});
关于ios - UIImageView 立即更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20062455/