1、需求场景
- 客户端需要将一段时间内的开屏广告图都预先下载到本地,确保用户在网络不佳甚至断网的情况下都能看到开屏广告;
- 需要预先拿到UIImage实例对象,动态修改图片的色调,再设置图片。
2、解决办法
-
2.1 使用SDWebImagePrefetcher来下载图片
- 将要下载的图片地址集合传入,SDWebImagePrefetcher就会帮我们将图片逐个下载下来,并且缓存在本地,缓存的方式和我们通常使用的动态加载图片一样以url为key存储。
NSArray *data_array = @[@"https://admin.sdacn.net/uploads/20211214/8ba4bdffb9949d2ffb9e9931e21ae43b.png", @"https://admin.sdacn.net/uploads/20211214/ca9ef53fca46ea354d7b06b57b5ef96e.png", @"https://admin.sdacn.net/uploads/20211214/5cd59d2020301bfdc65a6def3b6cedf9.png"]; SDWebImagePrefetcher *fetcher = [SDWebImagePrefetcher sharedImagePrefetcher]; [fetcher prefetchURLs:data_array progress:^(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls) { // 下载进度查看 } completed:^(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls) { // 全部下载完成 }];
-
2.2 获取图片
- 当我们需要使用对应地址的图片时,我们只需要以url为key来获取图片即可
NSString *img_url = @"https://admin.sdacn.net/uploads/20211214/8ba4bdffb9949d2ffb9e9931e21ae43b.png"; NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:[NSURL URLWithString:img_url]]; UIImage *image = [[SDImageCache sharedImageCache] imageFromCacheForKey:key];