我有一个 View Controller ,它在 viewDidAppear 中调用以下内容:
[self updateCameraImage];
[cameraImageView setImage:lastCameraImage];
效果很好。在后台, updateCameraImage 方法向服务器发送消息并检索图像数据,然后将该数据转换为 UIImage。然后它将 self.lastCameraImage 设置为此 UIImage。第二行将此图像设置为cameraImageView.image,新图像将显示在屏幕上。此 UIImageView 已添加到 Storyboard中,并作为属性添加到标题中。
@property (nonatomic, strong) UIImage *lastCameraImage;
@property (weak, nonatomic) IBOutlet UIImageView *cameraImageView;
我希望这个不断更新。问题是,如果我执行类似以下操作,直到最后一次调用 setImage 时,它实际上不会在 View 中显示新图像。我知道图像正在被检索,所以我不知道为什么它不起作用。
[self updateCameraImage];
[cameraImageView setImage:lastCameraImage];
[self updateCameraImage];
[cameraImageView setImage:lastCameraImage];
[self updateCameraImage];
[cameraImageView setImage:lastCameraImage];
任何帮助都会很棒!谢谢。
最佳答案
如果您在主线程上运行此代码,并且您的 updateCameraImage
函数是同步的,那么您将阻塞 UI,直到所有代码完成。尝试在后台执行提取,然后分派(dispatch)回主线程以更新 UI。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self updateCameraImage];
dispatch_async(dispatch_get_main_queue(), ^{
[cameraImageView setImage:lastCameraImage];
});
});
关于ios - UIImageView 重复更新失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22874646/