YYWebImage 是一個(gè)異步圖片加載框架 (YYKit 組件之一).
其設(shè)計(jì)目的是試圖替代 SDWebImage涉枫、PINRemoteImage愿汰、FLAnimatedImage 等開(kāi)源框架,它支持這些開(kāi)源框架的大部分功能衬廷,同時(shí)增加了大量新特性、并且有不小的性能提升侧戴。
它底層用 YYCache 實(shí)現(xiàn)了內(nèi)存和磁盤(pán)緩存, 用 YYImage 實(shí)現(xiàn)了 WebP/APNG/GIF 動(dòng)圖的解碼和播放跌宛。
你可以查看這些項(xiàng)目以獲得更多信息。
特性
異步的圖片加載本缠,支持 HTTP 和本地文件入问。
支持 GIF芬失、APNG匾灶、WebP 動(dòng)畫(huà)(動(dòng)態(tài)緩存,低內(nèi)存占用)颊糜。
支持逐行掃描秃踩、隔行掃描、漸進(jìn)式圖像加載鸟赫。
UIImageView消别、UIButton、MKAnnotationView岁经、CALayer 的 Category 方法支持蛇券。
常見(jiàn)圖片處理:模糊樊拓、圓角骑脱、大小調(diào)整苍糠、裁切、旋轉(zhuǎn)拥娄、色調(diào)等瞳筏。
高性能的內(nèi)存和磁盤(pán)緩存。
高性能的圖片設(shè)置方式摊欠,以避免主線(xiàn)程阻塞柱宦。
每個(gè)類(lèi)和方法都有完善的文檔注釋。
用法
從 URL 加載圖片
// 加載網(wǎng)絡(luò)圖片
imageView.yy_imageURL = [NSURL URLWithString:@"http://github.com/logo.png"];
// 加載本地圖片
imageView.yy_imageURL = [NSURL fileURLWithPath:@"/tmp/logo.png"];
加載動(dòng)圖
// 只需要把 `UIImageView` 替換為 `YYAnimatedImageView` 即可免糕。
UIImageView *imageView = [YYAnimatedImageView new];
imageView.yy_imageURL = [NSURL URLWithString:@"http://github.com/ani.webp"];
漸進(jìn)式圖片加載
// 漸進(jìn)式:邊下載邊顯示
[imageView yy_setImageWithURL:url options:YYWebImageOptionProgressive];
// 漸進(jìn)式加載石窑,增加模糊效果和漸變動(dòng)畫(huà) (見(jiàn)本頁(yè)最上方的GIF演示)
[imageView yy_setImageWithURL:url options:YYWebImageOptionProgressiveBlur | YYWebImageOptionSetImageWithFadeAnimation];
加載蚓炬、處理圖片
// 1. 下載圖片
// 2. 獲得圖片下載進(jìn)度
// 3. 調(diào)整圖片大小、加圓角
// 4. 顯示圖片時(shí)增加一個(gè)淡入動(dòng)畫(huà)棺棵,以獲得更好的用戶(hù)體驗(yàn)
[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];
// 清空磁盤(pán)緩存烛恤,帶進(jìn)度回調(diào)
[cache.diskCache removeAllObjectsWithProgressBlock:^(int removedCount, int totalCount) {
// progress
} endBlock:^(BOOL error) {
// end
}];
安裝
CocoaPods
將 cocoapods 更新至最新版本.
在 Podfile 中添加 pod 'YYWebImage'余耽。
執(zhí)行 pod install 或 pod update。
導(dǎo)入 <YYWebImage/YYWebImage.h>币喧。
注意:pod 配置并沒(méi)有包含 WebP 組件, 如果你需要支持 WebP,可以在 Podfile 中添加 pod 'YYImage/WebP'杀餐。你可以調(diào)用 YYImageWebPAvailable() 來(lái)檢查一下 WebP 組件是否被正確安裝。
Carthage
在 Cartfile 中添加 github "ibireme/YYWebImage"枉长。
執(zhí)行 carthage update --platform ios 并將生成的 framework 添加到你的工程琼讽。
導(dǎo)入 <YYWebImage/YYWebImage.h>。
注意: carthage framework 并沒(méi)有包含 webp 組件吼蚁。如果你需要支持 WebP问欠,可以用 CocoaPods 安裝,或者手動(dòng)安裝术唬。
手動(dòng)安裝
下載 YYWebImage 文件夾內(nèi)的所有內(nèi)容滚澜。
將 YYWebImage 內(nèi)的源文件添加(拖放)到你的工程设捐。
鏈接以下 frameworks:
UIKit
CoreFoundation
QuartzCore
AssetsLibrary
ImageIO
Accelerate
MobileCoreServices
sqlite3
libz
導(dǎo)入 YYWebImage.h塘淑。
注意:如果你需要支持 WebP,可以將 Vendor/WebP.framework(靜態(tài)庫(kù)) 加入你的工程槐沼。你可以調(diào)用 YYImageWebPAvailable() 來(lái)檢查一下 WebP 組件是否被正確安裝捌治。
文檔
你可以在 CocoaDocs 查看在線(xiàn) API 文檔,也可以用 appledoc 本地生成文檔兼吓。
系統(tǒng)要求
該項(xiàng)目最低支持 iOS 6.0 和 Xcode 7.0森枪。
許可證
YYWebImage 使用 MIT 許可證审孽,詳情見(jiàn) LICENSE 文件佑力。