iOS开发_ SDWebImage先下载图片保存起来,需要时再调用

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];
    
原文地址:https://www.cnblogs.com/CH520/p/15704199.html