我有一个视图控制器,它在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];
任何帮助都会很棒!感谢。
答案 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];
});
});