美文网首页iOS老中医
iOS SDWebImage的progressBlock中exp

iOS SDWebImage的progressBlock中exp

作者: 杂货铺学徒 | 来源:发表于2017-12-26 13:56 被阅读114次

    今天使用SDWebImage加载图片的时候想要一个进度条的加载效果,用的方法如下

    [imageView sd_setImageWithPreviousCachedImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:nil options:SDWebImageCacheMemoryOnly|SDWebImageProgressiveDownload progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
    
                [SVProgressHUD showProgress:(float)receivedSize/(float)expectedSize];
    
            } completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
                if ([SVProgressHUD isVisible]) {
                    [SVProgressHUD dismiss];
                }
    
               //your code
               ...
                
            }];
    

    结果发现progressBlock中的expectedSize始终是0。

    这是因为NSHTTPURLResponse中 Accept-Encoding为gzip造成的
    当遇到Accept-Encoding为gzip时,expectedsize会变为-1不确定的大小
    此时在SDWebImage中expectedsize判断小于0,就会赋值为0

    解决方法:可以将Accept-Encoding修改成非gzip的就可以获取需要的文件大小了

            [[SDWebImageDownloader sharedDownloader] setValue:@"" forHTTPHeaderField:@"Accept-Encoding"];
    
    

    相关文章

      网友评论

        本文标题:iOS SDWebImage的progressBlock中exp

        本文链接:https://www.haomeiwen.com/subject/zradgxtx.html