iOS學習之 YYWebImage 替代 SDWebImage

來源:互聯網
上載者:User

YYWebImage 是一個非同步圖片載入架構 (YYKit 組件之一).

源碼地址:點擊開啟連結

其設計目的是試圖替代 SDWebImage、PINRemoteImage、FLAnimatedImage 等開源架構,它支援這些開源架構的大部分功能,同時增加了大量新特性、並且有不小的效能提升。

它底層用 YYCache 實現了記憶體和磁碟緩衝, 用 YYImage 實現了 WebP/APNG/GIF 動圖的解碼和播放。
你可以查看這些項目以獲得更多資訊。 特性 非同步圖片載入,支援 HTTP 和本地檔案。 支援 GIF、APNG、WebP 動畫(動態緩衝,低記憶體佔用)。 支援漸進式掃描、隔行掃描、漸進式映像載入。 UIImageView、UIButton、MKAnnotationView、CALayer 的 Category 方法支援。 常見圖片處理:模糊、圓角、大小調整、裁切、旋轉、色調等。 高效能的記憶體和磁碟緩衝。 高效能的圖片設定方式,以避免主線程阻塞。 每個類和方法都有完善的文檔注釋。 用法 從 URL 載入圖片

// 載入網狀圖片imageView.yy_imageURL = [NSURL URLWithString:@"http://github.com/logo.png"];// 載入本地圖片imageView.yy_imageURL = [NSURL fileURLWithPath:@"/tmp/logo.png"];
載入動圖
// 只需要把 `UIImageView` 替換為 `YYAnimatedImageView` 即可。UIImageView *imageView = [YYAnimatedImageView new];imageView.yy_imageURL = [NSURL URLWithString:@"http://github.com/ani.webp"];
漸進式圖片載入
// 漸進式:邊下載邊顯示[imageView yy_setImageWithURL:url options:YYWebImageOptionProgressive];// 漸進式載入,增加模糊效果和漸層動畫 (見本頁最上方的GIF示範)[imageView yy_setImageWithURL:url options:YYWebImageOptionProgressiveBlur | YYWebImageOptionSetImageWithFadeAnimation];
載入、處理圖片
// 1. 下載圖片// 2. 獲得圖片下載進度// 3. 調整圖片大小、加圓角// 4. 顯示圖片時增加一個淡入動畫,以獲得更好的使用者體驗[imageView yy_setImageWithURL:url    placeholder:nil    options:YYWebImageOptionSetImageWithFadeAnimation    progress:^(NSInteger receivedSize, NSInteger expectedSize) {        progress = (float)receivedSize / expectedSize;    }    transform:^UIImage *(UIImage *image, NSURL *url) {        image = [image yy_imageByResizeToSize:CGSizeMake(100, 100) contentMode:UIViewContentModeCenter];        return [image yy_imageByRoundCornerRadius:10];    }    completion:^(UIImage *image, NSURL *url, YYWebImageFromType from, YYWebImageStage stage, NSError *error) {        if (from == YYWebImageFromDiskCache) {            NSLog(@"load from disk cache");        }    }];
圖片緩衝
YYImageCache *cache = [YYWebImageManager sharedManager].cache;// 擷取緩衝大小cache.memoryCache.totalCost;cache.memoryCache.totalCount;cache.diskCache.totalCost;cache.diskCache.totalCount;// 清空緩衝[cache.memoryCache removeAllObjects];[cache.diskCache removeAllObjects];// 清空磁碟緩衝,帶進度回調[cache.diskCache removeAllObjectsWithProgressBlock:^(int removedCount, int totalCount) {    // progress} endBlock:^(BOOL error) {    // end}];
安裝 CocoaPods 將 cocoapods 更新至最新版本. 在 Podfile 中添加 pod 'YYWebImage'。 執行 pod install 或 pod update。 匯入 <YYWebImage/YYWebImage.h>。 注意:pod 配置並沒有包含 WebP 組件, 如果你需要支援 WebP,可以在 Podfile 中添加 pod 'YYImage/WebP'。你可以調用 YYImageWebPAvailable() 來檢查一下 WebP 組件是否被正確安裝。 Carthage 在 Cartfile 中添加 github "ibireme/YYWebImage"。 執行 carthage update --platform ios 並將產生的 framework 添加到你的工程。 匯入 <YYWebImage/YYWebImage.h>。 注意: carthage framework 並沒有包含 webp 組件。如果你需要支援 WebP,可以用 CocoaPods 安裝,或者手動安裝。 手動安裝 下載 YYWebImage 檔案夾內的所有內容。 將 YYWebImage 內的源檔案添加(拖放)到你的工程。 連結以下 frameworks: UIKit CoreFoundation QuartzCore AssetsLibrary ImageIO Accelerate MobileCoreServices sqlite3 libz 匯入 YYWebImage.h。 注意:如果你需要支援 WebP,可以將 Vendor/WebP.framework(靜態庫) 加入你的工程。你可以調用 YYImageWebPAvailable() 來檢查一下 WebP 組件是否被正確安裝。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.