色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>通訊/手機編程>

iOS中SDWebImage怎么用?

大小:0.3 MB 人氣:0 2017-09-26 需要積分:1

  由于要監聽網絡狀態,在這里筆者推薦使用AFNetWorking。

  1)在GitHub或者利用cocoaPod給項目導入第三方框架AFNetWorking。

  2)在AppDelegate.m文件中的application:didFinishLaunchingWithOptions:方法中監聽網絡狀態。

  // AppDelegate.m 文件中

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

  {

  // 監控網絡狀態

  [[AFNetworkReachabilityManager sharedManager] startMonitoring];

  }

  // 以下代碼在需要監聽網絡狀態的方法中使用

  AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];

  if (mgr.isReachableViaWiFi) { // 在使用Wifi, 下載原圖

  } else { // 其他,下載小圖

  }

  }

  這時就會有iOS學習者開始抱怨:這不是很簡單嗎?于是三下五除二寫完了以下代碼。

  // 利用MVC,在設置cell的模型屬性時候,下載圖片

  - setItem:(CustomItem *)item

  {

  _item = item;

  UIImage *placeholder = [UIImage imageNamed:@“placeholderImage”];

  AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];

  if (mgr.isReachableViaWiFi) { // 在使用Wifi, 下載原圖

  [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.originalImage] placeholderImage:placeholder];

  } else { // 其他,下載小圖

  [self.imageView sd_setImageWithURL:[NSURL URLWithString:item.thumbnailImage] placeholderImage:placeholder];

  }

  }

  此時,確實能完成基本的按照當前網絡狀態下載對應的圖片,但是真實開發中,這樣其實是不合理的。以下是需要注意的細節:

  1)SDWebImage會自動幫助開發者緩存圖片(包括內存緩存,沙盒緩存),所以我們需要設置用戶在WiFi環境下下載的高清圖,下次在蜂窩網絡狀態下打開應用也應顯示高清圖,而不是去下載縮略圖。

  2)許多應用設置模塊帶有一個功能:移動網絡環境下仍然顯示高清圖。這個功能其實是將設置記錄在沙盒中,關于數據保存到本地,可以查看本人另一篇簡書首頁文章:iOS本地數據存取,看這里就夠了。

  3)當用戶處于離線狀態時候,無法合理處理業務。

  于是,開始加以改進。為了讓讀者你更容易理解,我先貼出偽代碼:

  - setItem:(CustomItem *)item

  {

  _item = item;

  if (緩存中有原圖)

  {

  self.imageView.image = 原圖;

  } else

  {

  if (Wifi環境)

  {

  下載顯示原圖

  } else if (手機自帶網絡)

  {

  if (3G\4G環境下仍然下載原圖)

  {

  下載顯示原圖

  } else

  {

  下載顯示小圖

  }

  } else

  {

  if (緩存中有小圖)

  {

  self.imageView.image = 小圖;

  } else // 處理離線狀態

  {

  self.imageView.image = 占位圖片;

  }

  }

  }

  }

  實現上面的偽代碼:讀者可以一一對應上面的偽代碼。練習的時候推薦先寫偽代碼,再寫真實代碼

  多多注意“注釋”解釋。

  - setItem:(CustomItem *)item

  {

  _item = item;

  // 占位圖片

  UIImage *placeholder = [UIImage imageNamed:@“placeholderImage”];

  // 從內存\沙盒緩存中獲得原圖,

  UIImage *originalImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:item.originalImage];

  if (originalImage) { // 如果內存\沙盒緩存有原圖,那么就直接顯示原圖(不管現在是什么網絡狀態)

  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環境是否仍然下載原圖

  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 { // 處理離線狀態,而且有沒有緩存時的情況

  self.imageView.image = placeholder;

  }

  }

  }

  }

  解決了嗎?真正的坑才剛剛開始。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

用戶評論

      ?
      主站蜘蛛池模板: 4hu四虎免费影院www | 97人人碰免费视频公开 | 四虎一级片 | 久久99AV无色码人妻蜜柚 | 19不插片免费视频 | 免费色片播放器 | 国产在线精彩视频 | 国产成人精品男人免费 | 国产精品永久免费视频观看 | 国内精品偷拍在线观看 | 久久偷拍vs国产在线播放 | 色中色论坛网站 | 久久九九少妇免费看A片 | 寻找最美乡村教师颁奖晚会 | 动漫美女性侵 | 色拍拍噜噜噜啦啦新网站 | 人体内射精一区二区三区 | 好色的妹妹 | 亚洲精品久久久久久偷窥 | 九九国产精品成人AV麻豆 | 高H黄暴NP辣H一女多男 | 古月娜下面好紧好爽 | 草莓视频cm.888tw| 欲香欲色天天影视大全 | 成人欧美一区二区三区白人 | 黑吊大战白女出浆 | 日本一卡2卡3卡四卡精品网站 | 久久成人无码国产免费播放 | 97色伦久久视频在观看 | 桃花在线视频观看免费 | 亚洲伊人久久大香线蕉综合图片 | 欧美九十老太另类 | 亚洲国产果果在线播放在线 | 欧美丰满熟妇无码XOXOXO | 99免费在线观看视频 | 精品国产99久久久久久麻豆 | 九九热伊人 | 亚洲精品高清AV在线播放 | 好男人视频免费高清在线观看www | 99久久精品国产亚洲AV | 闺蜜扒开我尿口使劲揉 |