SDWebImage:版本V5之上的变动

2019-08-27  本文已影响0人  春暖花已开
设置下载器的请求头:

V4设置方式:

SDWebImageDownloader *downloader = [SDWebImageManager sharedManager].imageDownloader;
[downloader setValue:@"foo=bar" forHTTPHeaderField:@"Cookie"];

V5设置方式之Objective-C

SDWebImageDownloaderRequestModifier *requestModifier = [SDWebImageDownloaderRequestModifier requestModifierWithBlock:^NSURLRequest * _Nullable(NSURLRequest * _Nonnull request) {
    if ([request.URL.host isEqualToString:@"foo"]) {
        NSMutableURLRequest *mutableRequest = [request mutableCopy];
        [mutableRequest setValue:@"foo=bar" forHTTPHeaderField:@"Cookie"];
        return [mutableRequest copy];
    }
    return request;
}];
SDWebImageDownloader.sharedDownloader.requestModifier = requestModifier;

V5设置方式之Swift

let requestModifier = SDWebImageDownloaderRequestModifier { (request) -> URLRequest? in
    if (request.url?.host == "foo") {
        var mutableRequest = request
        mutableRequest.setValue("foo=bar", forHTTPHeaderField: "Cookie")
        return mutableRequest
    }
    return request
};
SDWebImageDownloader.shared.requestModifier = requestModifier

[[SDWebImageDownloader sharedDownloader] setValue:@"requestHeader_value" forHTTPHeaderField:@"requestHeader_key"];

图片预加载

NSArray<NSURL> *imageURLs;
[[SDWebImagePrefetcher.sharedImagePrefetcher] prefetchURLs:imageURLs progress:^(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls) {
    // prefetch progress changed
} completed:^(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls) {
    // all provided urls prefetched
}];

SDWebImagePrefetcher *prefetcher = SDWebImagePrefetcher.sharedImagePrefetcher;
[prefetcher cancelPrefetching];
[prefetcher prefetchURLs:@[url1, url2]];

指示器

imageView1.sd_imageIndicator = SDWebImageActivityIndicator.grayIndicator;
imageView2.sd_imageIndicator = SDWebImageProgressIndicator.defaultIndicator;

直接使用SDWebImageManager下载

SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager loadImageWithURL:imageURL
                  options:0
                 progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                        // progression tracking code
                 }
                 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
                    if (image) {
                        // do something with image
                    }
                 }];

自定义缓存过滤键

SDWebImageCacheKeyFilter *cacheKeyFilter = [SDWebImageCacheKeyFilter cacheKeyFilterWithBlock:^NSString * _Nullable(NSURL * _Nonnull url) {
    NSURLComponents *urlComponents = [[NSURLComponents alloc] initWithURL:url resolvingAgainstBaseURL:NO];
    urlComponents.query = nil;
    return urlComponents.URL.absoluteString;
}];
SDWebImageManager.sharedManager.cacheKeyFilter = cacheKeyFilter;

API Changes

SDImageCache

SDImageCacheConfig

参考:

SDWebImage的使用
5.0 Migration Guide

上一篇 下一篇

猜你喜欢

热点阅读