UIImageView无法重复更新

时间:2014-04-04 23:26:11

标签: ios iphone objective-c uiimageview uiimage

我有一个视图控制器,它在viewDidAppear中调用以下内容:

[self updateCameraImage];
[cameraImageView setImage:lastCameraImage];

这很有效。在后台,updateCameraImage方法向服务器发送消息并检索图像数据,然后将该数据转换为UIImage。然后它将self.lastCameraImage设置为此UIImage。第二行将此图像设置为cameraImageView.image,新图像显示在屏幕上。此UIImageView已添加到故事板中,并作为属性添加到标题中。

@property (nonatomic, strong) UIImage *lastCameraImage;
@property (weak, nonatomic) IBOutlet UIImageView *cameraImageView;

我希望不断更新。问题是,如果我执行类似下面的操作,直到最后一次调用setImage时,它才会在视图中显示新图像。我知道图像正在被检索,所以我不知道它为什么不起作用。

[self updateCameraImage];
[cameraImageView setImage:lastCameraImage];
[self updateCameraImage];
[cameraImageView setImage:lastCameraImage];
[self updateCameraImage];
[cameraImageView setImage:lastCameraImage];

任何帮助都会很棒!感谢。

1 个答案:

答案 0 :(得分:1)

如果您在主线程上运行此代码,并且您的updateCameraImage函数是同步的,那么您将阻止UI,直到所有代码完成。尝试在后台执行提取,然后调度回主线程以更新UI。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [self updateCameraImage];

    dispatch_async(dispatch_get_main_queue(), ^{
        [cameraImageView setImage:lastCameraImage];
    });
});