1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      iOS圖片加載框架SDWebImage的示例分析

      這篇文章將為大家詳細(xì)講解有關(guān)iOS圖片加載框架SDWebImage的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

      扎賚特ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

      目的

      在使用SDWebImage加載圖片時(shí),尤其是加載gif等大圖時(shí),SDWebImage會將圖片緩存在內(nèi)存中,這樣是非常吃內(nèi)存的,這時(shí)我們就需要在適當(dāng)?shù)臅r(shí)候去釋放一下SDWebImage的內(nèi)存緩存,才不至于造成APP閃退。

      SDWebImage 提供了 UIImageView、UIButton 、MKAnnotationView 的圖片下載分類,只要一行代碼就可以實(shí)現(xiàn)圖片異步下載和緩存功能。

      這樣開發(fā)者就無須花太多精力在圖片下載細(xì)節(jié)上,專心處理業(yè)務(wù)邏輯。

      SDWebImage 特點(diǎn)

      1. 提供 UIImageView, UIButton, MKAnnotationView 的分類,用來顯示網(wǎng)絡(luò)圖片,以及緩存管理

      2. 異步下載圖片

      3. 異步緩存(內(nèi)存+磁盤),并且自動(dòng)管理緩存有效性

      4. 后臺圖片解壓縮

      5. 同一個(gè) URL 不會重復(fù)下載

      6. 自動(dòng)識別無效 URL,不會反復(fù)重試

      7. 不阻塞主線程

      8. 高性能

      9. 使用 GCD 和 ARC

      10. 支持多種圖片格式(包括 WebP 格式)

      11. 支持動(dòng)圖(GIF)

      12. 4.0 之前的動(dòng)圖效果并不是太好

      13. 4.0 以后基于 FLAnimatedImage加載動(dòng)圖

      注:本文選讀的代碼是 3.7.3 版本的,所以動(dòng)圖加載還不支持 FLAnimatedImage。

      SDWebImage 使用

      1. UITableView 中使用 UIImageView+WebCache

      復(fù)制代碼 代碼如下:


      [cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

      2. 使用回調(diào) blocks

      在 block 中得到圖片下載進(jìn)度和圖片加載完成(下載完成或者讀取緩存)的回調(diào),如果你在圖片加載完成前取消了請求操作,就不會收到成功或失敗的回調(diào)

      [cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
                 placeholderImage:[UIImage imageNamed:@"placeholder.png"]
                     completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
                       ... completion code here ...
                     }];

      3. SDWebImageManager 的使用

      UIImageView(WebCache) 分類的核心在于 SDWebImageManager 的下載和緩存處理,SDWebImageManager將圖片下載和圖片緩存組合起來了。SDWebImageManager也可以單獨(dú)使用。

      SDWebImageManager *manager = [SDWebImageManager sharedManager];
      [manager loadImageWithURL:imageURL
                 options:0
                progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                  // progression tracking code
                }
                completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
                  if (image) {
                    // do something with image
                  }
                }];

      4. 單獨(dú)使用 SDWebImageDownloader 異步下載圖片

      我們還可以單獨(dú)使用 SDWebImageDownloader 來下載圖片,但是圖片內(nèi)容不會緩存。

      SDWebImageDownloader *downloader = [SDWebImageDownloader sharedDownloader];
      [downloader downloadImageWithURL:imageURL
                     options:0
                    progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                      // progression tracking code
                    }
                    completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
                      if (image && finished) {
                        // do something with image
                      }
                    }];

      5. 單獨(dú)使用 SDImageCache 異步緩存圖片

      SDImageCache 支持內(nèi)存緩存和異步的磁盤緩存(可選),如果你想單獨(dú)使用 SDImageCache 來緩存數(shù)據(jù)的話,可以使用單例,也可以創(chuàng)建一個(gè)有獨(dú)立命名空間的 SDImageCache 實(shí)例。

      添加緩存的方法:

      [[SDImageCache sharedImageCache] storeImage:myImage forKey:myCacheKey];

      默認(rèn)情況下,圖片數(shù)據(jù)會同時(shí)緩存到內(nèi)存和磁盤中,如果你想只要內(nèi)存緩存的話,可以使用下面的方法:

      [[SDImageCache sharedImageCache] storeImage:myImage forKey:myCacheKey toDisk:NO];

      讀取緩存時(shí)可以使用 queryDiskCacheForKey:done: 方法,圖片緩存的 key 是唯一的,通常就是圖片的 absolute URL。

      SDImageCache *imageCache = [[SDImageCache alloc] initWithNamespace:@"myNamespace"];
      [imageCache queryDiskCacheForKey:myCacheKey done:^(UIImage *image) {
          // image is not nil if image was found
        }];

      6. 自定義緩存 key

      有時(shí)候,一張圖片的 URL 中的一部分可能是動(dòng)態(tài)變化的(比如獲取權(quán)限上的限制),所以我們只需要把 URL 中不變的部分作為緩存用的 key。

      SDWebImageManager.sharedManager.cacheKeyFilter = ^(NSURL *url) {
            url = [[NSURL alloc] initWithScheme:url.scheme host:url.host path:url.path];
            return [url absoluteString];
          };

      常見問題

      問題 1:使用 UITableViewCell 中的 imageView 加載不同尺寸的網(wǎng)絡(luò)圖片時(shí)會出現(xiàn)尺寸縮放問題。

      解決方案:

      自定義 UITableViewCell,重寫 -layoutSubviews 方法,調(diào)整位置尺寸;

      或者直接棄用 UITableViewCell 的 imageView,自己添加一個(gè) imageView 作為子控件。

      問題 2:圖片刷新問題:SDWebImage 在進(jìn)行緩存時(shí)忽略了所有服務(wù)器返回的 caching control 設(shè)置,并且在緩存時(shí)沒有做時(shí)間限制,這也就意味著圖片 URL 必須是靜態(tài)的了,要求服務(wù)器上一個(gè) URL 對應(yīng)的圖片內(nèi)容不允許更新。但是如果存儲圖片的服務(wù)器不由自己控制,也就是說 圖片內(nèi)容更新了,URL 卻沒有更新,這種情況怎么辦?

      解決方案:在調(diào)用 sd_setImageWithURL: placeholderImage: options:方法時(shí)設(shè)置 options 參數(shù)為 SDWebImageRefreshCached,這樣雖然會降低性能,但是下載圖片時(shí)會照顧到服務(wù)器返回的 caching control。

      問題 3:在加載圖片時(shí),如何添加默認(rèn)的 progress indicator ?

      解決方案:在調(diào)用 -sd_setImageWithURL:方法之前,先調(diào)用下面的方法:

       [imageView sd_setShowActivityIndicatorView:YES];
       [imageView sd_setIndicatorStyle:UIActivityIndicatorViewStyleGray];
      ```![](/upload/otherpica42/120910.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/300)

      關(guān)于“iOS圖片加載框架SDWebImage的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。


      網(wǎng)頁題目:iOS圖片加載框架SDWebImage的示例分析
      鏈接URL:http://www.ef60e0e.cn/article/iidsce.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        江城| 雷山县| 富锦市| 拜城县| 抚顺市| 仁布县| 清流县| 舟曲县| 石嘴山市| 田林县| 前郭尔| 龙泉市| 辽宁省| 云南省| 泰来县| 察隅县| 溆浦县| 台北市| 杨浦区| 镇康县| 定西市| 昭通市| 普安县| 来宾市| 两当县| 荣昌县| 宁夏| 宜昌市| 德保县| 高碑店市| 广南县| 秦皇岛市| 志丹县| 大理市| 牡丹江市| 自贡市| 桐梓县| 凤阳县| 德清县| 台北县| 鞍山市|