SDWebImage的一些使用技巧

轉載于:http://www.itdecent.cn/p/dabc0c6d083e 作者:hosea_zhou(簡書作者)

SDWebImage作為目前最受歡迎的圖片下載第三方框架,使用率很高。很多時候在網絡網絡狀態(tài)為WiFi時,顯示圖片高清圖;網絡狀態(tài)為蜂窩移動網絡時,顯示圖片縮略圖。

由于要監(jiān)聽網絡狀態(tài),可以使用RealReachability與AFNetWorking,這兩個都是在Github獲得大量star的第三方開源框架,在這里主要講AFNetWorking。
我們利用cocoaPods導入第三方框架AFNetWorking到項目中。
在AppDelegate.m文件中的application:didFinishLaunchingWithOptions:方法中監(jiān)聽網絡狀態(tài)。

// AppDelegate.m 文件中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // 監(jiān)控網絡狀態(tài) 
  [[AFNetworkReachabilityManager sharedManager] startMonitoring];}
  // 以下代碼在需要監(jiān)聽網絡狀態(tài)的方法中使用        
  AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager  sharedManager];
  if (mgr.isReachableViaWiFi) { 
  // 在使用Wifi, 下載原圖 
  } else { 
  // 其他,下載小圖
  } 
}

但因機制原因,實際中下載圖片的操作是這樣的

- setItem:(CustomItem *)item{ 
  _item = item; 
  // 占位圖片 
  UIImage *placeholder = [UIImage imageNamed:@"placeholderImage"]; 
  // 從內存\沙盒緩存中獲得原圖 
  UIImage *originalImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:item.originalImage];
   if (originalImage) { // 如果內存\沙盒緩存有原圖,那么就直接顯示原圖(不管現在是什么網絡狀態(tài)) self.imageView.image = originalImage; 
   } 
   else { 
  // 內存\沙盒緩存沒有原圖 
  AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
  if (mgr.isReachableViaWiFi) { // 在使用Wifi, 下載原圖     
  [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.originalImage] placeholderImage:placeholder]; 
  } 
  else if (mgr.isReachableViaWWAN) { // 在使用手機自帶網絡 // 用戶的配置項假設利用NSUserDefaults存儲到了沙盒中 
    // [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"alwaysDownloadOriginalImage"]; 
    // [[NSUserDefaults standardUserDefaults] synchronize];
    #warning 從沙盒中讀取用戶的配置項:在3G\4G環(huán)境是否仍然下載原圖 
    BOOL alwaysDownloadOriginalImage = [[NSUserDefaults standardUserDefaults]   boolForKey:@"alwaysDownloadOriginalImage"];
    if (alwaysDownloadOriginalImage) { 
      // 下載原圖 
      [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.originalImage] placeholderImage:placeholder]; 
     } 
     else { 
      // 下載小圖 
      [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.thumbnailImage] placeholderImage:placeholder];   } 
  } else { 
    // 沒有網絡
    UIImage *thumbnailImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:item.thumbnailImage]; 
      if (thumbnailImage) { 
        // 內存\沙盒緩存中有小圖 
        self.imageView.image = thumbnailImage; 
      } 
      else { 
        // 處理離線狀態(tài),而且有沒有緩存時的情況 
        self.imageView.image = placeholder; 
      } 
    } 
  }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 發(fā)現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,036評論 4 61
  • SDWebImage作為目前最受歡迎的圖片下載第三方框架,使用率很高。但是你真的會用嗎?本文接下來將通過例子分析如...
    擋不住的獅子閱讀 1,413評論 0 4
  • 完全想不到,笑來老師會用三個腦來解釋執(zhí)行力差的根源!自己昨天的猜測跟這個相比,如果老師探測的是內核,那自己的簡直就...
    大喵和咸魚閱讀 342評論 0 2
  • 這兩天一直想寫一個內容,說說每個創(chuàng)業(yè)之人身邊的幾類人,處于懶癌,處于文字匱乏,無從下手,所以時間一拖在拖 今晚YY...
    一諾千金的劉一諾閱讀 343評論 0 0
  • 她死在那一夜 紅色的燭光搖擺不定的閃爍著,光芒在她的臉龐間跳躍,像一只紅色的蝴蝶在花叢中飛舞。門外嘶喊聲無數,是那...
    無明回憶錄閱讀 408評論 0 1

友情鏈接更多精彩內容