最近做一个功能是需要在加载图片的时候显示百分比加载进度条,于是就碰上了SDWebImage的一个问题。
- (void)sd_setImageWithURL:(nullable NSURL *)url
placeholderImage:(nullable UIImage *)placeholder
options:(SDWebImageOptions)options
progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
completed:(nullable SDExternalCompletionBlock)completedBlock {
}
这是它的一个方法,progress是可以显示已下载的进度,关键就是将这里的进度与我们需要展示的进度条数据结合起来,一开始按照它的demo是达不到效果的(不知道算不算是个BUG),后来经过各种百度,终于找到了一个方法
#define dispatch_main_sync_safe(block)\
if ([NSThread isMainThread])\
{\
block();\
}\
else\
{\
dispatch_sync(dispatch_get_main_queue(), block);\
}
然后在progress的block里面,
dispatch_main_sync_safe(^{
// your code
});
然后就可以实现接收进度实时展示在你的进度条上了。