使用多线程时,如何更新MBProgressHUD提示进度?

我的多线程如:

asset = self.travelService.travelEditModel.assets[i];
            
PHCachingImageManager *imageManager = [[PHCachingImageManager alloc] init];
            
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
            options.networkAccessAllowed = YES;
            
[imageManager requestImageDataForAsset:asset options:options resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
                
                sleep(1);
                //我想在这里执行更新进度条的代码。但是无效。
}];

我想更新线程提示 执行到 50% 这样。如何做呢?


我并不是下载照片提示进度。我是从相册里面拿照片,比如30张,然后处理到第几张,给主线程提示进度。

阅读 5.2k
4 个回答

首先代码格式不整齐,差评!

如果你想要在 resultHandler 中操作 MBProgressHUD 的话,需要跳回主线程执行。

进度获取有一种方式是:预先获取图片总大小,再根据已下载数据流大小做计算得出进度百分比。
当然还有其它方式,也取决于你是用的库。

用afnetworking可以获取到下载或上传进度,然后再在主线程里更新hud的progress。

可以通过一个Block/闭包来实现更新界面

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题