SDWebImage的一些使用技巧

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

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

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

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

但因機(jī)制原因,實(shí)際中下載圖片的操作是這樣的

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

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容