AFNetworking 3.0 setImageWithURLRequest下载进度

时间:2016-01-12 12:42:51

标签: ios uiimageview afnetworking progress afnetworking-3

使用UIImageView+AFNetworking类别和AFNetworking 3.0时,是否有人能够获得良好的工作解决方案来获取下载进度。

这个category,我用于3.0版本的版本已经停止工作了。

这是我自己的实验version,遗憾的是,目前随机崩溃。

3 个答案:

答案 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中添加几行来实现此目的

  1. 将此代码放在导入语句

    下的文件顶部
    static void * AFTaskCountOfBytesReceivedContext = &AFTaskCountOfBytesReceivedContext;
    
  2. 您需要注册观察者以跟踪通过在位置<{1}}下的位置添加以下行来接收的字节

    setImageWithURLRequest
  3. 在结尾处添加此新功能。

    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];
    }