IOS YYKit學(xué)習(xí)之YYWebImage

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 文件佑力。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末筋遭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瘸洛,更是在濱河造成了極大的恐慌次和,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件石蔗,死亡現(xiàn)場(chǎng)離奇詭異养距,居然都是意外死亡日熬,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)耘纱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)毕荐,“玉大人,你說(shuō)我怎么就攤上這事员寇〉诿溃” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵牲览,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我贡必,道長(zhǎng)庸毫,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任利花,我火速辦了婚禮炒事,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挠乳。我一直安慰自己姑躲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布卖怜。 她就那樣靜靜地躺著马靠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虑粥。 梳的紋絲不亂的頭發(fā)上宪哩,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天锁孟,我揣著相機(jī)與錄音茁瘦,去河邊找鬼。 笑死圆恤,一個(gè)胖子當(dāng)著我的面吹牛腔稀,可吹牛的內(nèi)容都是我干的羽历。 我是一名探鬼主播淡喜,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼炼团,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了瘟芝?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晤郑,失蹤者是張志新(化名)和其女友劉穎贩汉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體匹舞,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赐稽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年姊舵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片括丁。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡史飞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出构资,到底是詐尸還是另有隱情陨簇,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布己单,位于F島的核電站,受9級(jí)特大地震影響句携,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜矮嫉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一蠢笋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鳞陨,春花似錦、人聲如沸厦滤。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)趟咆。三九已至,卻和暖如春值纱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虐唠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工疆偿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翁脆。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓反番,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親罢缸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,737評(píng)論 25 707
  • Swift版本點(diǎn)擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,322評(píng)論 7 249
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件颇蜡、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評(píng)論 4 62
  • 城市套路深辆亏,我要回農(nóng)村,農(nóng)村路更滑扮叨,人心更復(fù)雜。創(chuàng)業(yè)是一場(chǎng)智力游戲甫匹,而農(nóng)村創(chuàng)業(yè)更須智力。 種大田作物兵迅,要盡...
    三良薯業(yè)閱讀 249評(píng)論 0 0
  • 我叫若依 恍箭。一個(gè)十八歲的女孩。 從小就生活在南方扯夭,愛(ài)看武俠小說(shuō)的我很是喜歡北方的男子。高中畢業(yè)交洗,陰差陽(yáng)錯(cuò),我去上海...
    Yulindelucky閱讀 197評(píng)論 0 0