ios - UIImageView 立即更改图像

标签 ios uiimageview

在我当前的实现中,我点击 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/

相关文章:

ios - 检索每个用户的个人资料图片解析iOS swift

ios - AnimateWithDuration 在 UIView 上禁用 userInteraction

ios - 如何拖动 UIImageView?

iphone - UIImage在uibutton中查看图片标题

ios - 快速布洛克 "Token is required"

iOS MapKit - 如何将 map 集中在从 View 中的文本字段获得的特定位置?

iphone - 设置 UISegmentedControl 的背景图片

ios - 动态改变UIImageview的高度

iphone - 如何将多个 UIElement(uilabel、uiimageview 等)相互堆叠/z 定位?

ios - 如何设置自动布局约束,使 UIImageView 的高度等于父 View 的高度?