1. 程式人生 > 其它 >iOS開發_ SDWebImage先下載圖片儲存起來,需要時再呼叫

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];
    


作者: CH520 出處: 部落格園資源分享中心