iOS SDWebImage的progressBlock中expectedsize =0問題

今天使用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
           ...
            
        }];

結(jié)果發(fā)現(xiàn)progressBlock中的expectedSize始終是0。

這是因為NSHTTPURLResponse中 Accept-Encoding為gzip造成的
當遇到Accept-Encoding為gzip時,expectedsize會變?yōu)?1不確定的大小
此時在SDWebImage中expectedsize判斷小于0,就會賦值為0

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容