使用UIImageView+AFNetworking类别和AFNetworking 3.0时,是否有人能够获得良好的工作解决方案来获取下载进度。
这个category,我用于3.0版本的版本已经停止工作了。
这是我自己的实验version,遗憾的是,目前随机崩溃。
答案 0 :(得分:2)
以下是AFNetworking 3.0的修改版本,您可以使用 UIImageView + AFNetworking 类别从服务器加载图像时显示进度。
<强> https://github.com/rushisangani/AFNetworking 强>
请用原始AFNetworking文件替换以下文件。
UIImageView+AFNetworking.h,
UIImageView+AFNetworking.m,
UIImage+ImageDownloader.h,
UIImage+ImageDownloader.m
注意:如果您更新了pod,则会删除它。
答案 1 :(得分:1)
如果您查看AFImageDownloader,则UIImageView类别会使用它来下载图像。你在这堂课
- (nullable AFImageDownloadReceipt *)downloadImageForURLRequest: (NSURLRequest *)request
success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, UIImage *responseObject))success
failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, NSError *error))failure;
它返回一个具有NSURLSessionDataTask *任务属性的收据。 NSURLSessionDataTask具有不同的字节下载属性,预期接收的字节数等等。也许你可以使用它来完成你的任务。
答案 2 :(得分:1)
您可以通过在 UIImageView + AFNetworking.h中添加几行来实现此目的
将此代码放在导入语句
下的文件顶部static void * AFTaskCountOfBytesReceivedContext = &AFTaskCountOfBytesReceivedContext;
您需要注册观察者以跟踪通过在位置<{1}}下的位置添加以下行来接收的字节
setImageWithURLRequest
在结尾处添加此新功能。
if (cachedImage) {
// AFNetworking default code
}
else{
// AFNetworking default code
// Our new lines to track the download
[self.af_activeImageDownloadReceipt.task addObserver:self forKeyPath:@"state" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesReceivedContext];
[self.af_activeImageDownloadReceipt.task addObserver:self forKeyPath:@"countOfBytesReceived" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesReceivedContext];
}