Swift中的圖片處理庫Kingfisher

Kingfisher
Kingfisher

在oc時代有個非常強大圖片緩存處理的庫SDWebImage煎楣,swift中現(xiàn)在也有個不錯的圖片處理的庫----Kingfisher

此庫是由onevcat大神所寫份蝴,感謝大神的無私奉獻英融。

大神關于swift的理解非常深刻,http://swifter.tips/ 我最近正在拜讀,推薦給大家。深入理解swift語言步鉴。

下面簡單介紹下這個庫的一些用法。其實都在大神github地址上有所講解
https://github.com/onevcat/Kingfisher

Kingfisher文檔地址:http://cocoadocs.org/docsets/Kingfisher/1.6.1/

Kingfisher庫下載圖片默認是帶緩存的

最簡單的使用

import Kingfisher
imageView.kf_setImageWithURL(NSURL(string: "http://your_image_url.png")!)

這邊我也是滿心歡喜的在百度隨便找了個圖測試,但是并沒有down下來氛琢。喊递。用https就可以,看下控制臺信息好像是安全之類的問題阳似,網上查了下 解決了

http 開頭連接不能讀取解決方案 ,在info.plist里加上下面這段

<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
</plist>

或者 去配置一個Dictionary類型的NSAppTransportSecurity 子item是Boolean類型NSAllowsArbitraryLoads value是YES

OK骚勘,解決。

我是隨便在baidu找了一張卡通圖
http://pic29.nipic.com/20130512/12428836_110546647149_2.jpg
第一次回加載一會障般,第二次就不會加載了调鲸。

添加默認圖

我們大多會在tableviewCell中的頭像上使用盛杰,加載的時候顯示空空的有點怪挽荡。作者很貼心的給我們提供了默認圖參數(shù)

testImag.kf_setImageWithURL(NSURL(string: "http://your_image_url.png")!, placeholderImage: UIImage(named: "mrt"))

這時候在加載的時候就會顯示默認圖

默認情況下Kingfisher使用url當做cache(緩存)的key。 不過你也可以自定義這個key 即供。

let URL = NSURL(string: "http://your_image_url.png")!
let resource = Resource(downloadURL: URL, cacheKey: "your_customized_key")
imageView.kf_setImageWithResource(resource)

首先會在內存或者硬盤讀取“your_customized_key”的緩存 定拟,如果沒有找到,就嘗試從URL里download逗嫡,down下來在用你提供的key保存起來供下次使用

一些選項

Kingfisher 默認先從內存和硬盤搜 青自,如果沒找到才去URL down,當然你也可以強制它每次從URL down驱证,忽略緩存

imageView.kf_setImageWithURL(NSURL(string: "your_image_url")!, placeholderImage: nil, optionsInfo: [.Options: KingfisherOptions.ForceRefresh])

還有一些其他的選項控制緩存等級的延窜,這些可以看文檔

你還可以自定義緩存取代默認的。

let myCache = ImageCache(name:"my_cache")
imageView.kf_setImageWithURL(NSURL(string: "your_image_url")!, placeholderImage: nil, optionsInfo: [.TargetCache: myCache])

這個在某種情況下你想使用指定緩存的時候會有用

當然抹锄,還可以設置一些動畫

imageView.kf_setImageWithURL(NSURL(string: "your_image_url")!,
                         placeholderImage: nil,
                              optionsInfo: [.Transition: ImageTransition.Fade(1)])

回調

有時候需要下載完成后做點事情逆瑞,這些邏輯可以寫在回調中

imageView.kf_setImageWithURL(NSURL(string: "your_image_url")!, 
  placeholderImage: nil, 
  optionsInfo: nil, 
  progressBlock: { (receivedSize, totalSize) -> () in 
  println("Download Progress: \(receivedSize)/\(totalSize)") }, 
  completionHandler: { (image, error, imageURL) -> () in 
  println("Downloaded and set!") 
})

取消任務

所有 kf_setImageWithURL 都返回 RetrieveImageTask類型的對象 , 你可以調用cancel方法取消正在執(zhí)行的任務

let task = imageView.kf_setImageWithURL(NSURL(string: "http://your_image_url.png")!)
task.cancel()

下載和緩存系統(tǒng)

我們可以自定義下載和緩存系統(tǒng)的一寫屬性伙单,比如 超時時間

let downloader = KingfisherManager.sharedManager.downloader

// 修改超時時間
downloader.downloadTimeout = 5

let cache = KingfisherManager.sharedManager.cache

// 設置硬盤最大緩存50M 获高,默認無限
cache.maxDiskCacheSize = 50 * 1024 * 1024
// 設置硬盤最大保存3天 , 默認1周
cache.maxCachePeriodInSecond = 60 * 60 * 24 * 3

// 獲取硬盤緩存的大小
cache.cache.calculateDiskCacheSizeWithCompletionHandler { (size) -> () in      
    println("disk size in bytes: \(size)")
}

內存的緩存在app退出或者后臺運行或者內存警告的時候會被清除 吻育,硬盤在滿足上面的條件才會被清理 念秧, 當然也可以手動清理

//清理內存緩存
cache.clearMemoryCache()

// 清理硬盤緩存,這是一個異步的操作
cache.clearDiskCache()

// 清理過期或大小超過磁盤限制緩存布疼。這是一個異步的操作
cache.cleanExpiredDiskCache()

大概就這些基本的操作摊趾,更多操作,大家去查看文檔游两。這些基本操作也在github上有砾层。我就簡單翻譯過來的。供自己以后查閱器罐,也推薦給大家梢为。上面的代碼自己也試過,確實好用。

再次感謝onevcat大神铸董,支持國產庫祟印!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市粟害,隨后出現(xiàn)的幾起案子蕴忆,更是在濱河造成了極大的恐慌,老刑警劉巖悲幅,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件套鹅,死亡現(xiàn)場離奇詭異,居然都是意外死亡汰具,警方通過查閱死者的電腦和手機卓鹿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來留荔,“玉大人吟孙,你說我怎么就攤上這事【鄣” “怎么了杰妓?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碘勉。 經常有香客問我巷挥,道長,這世上最難降的妖魔是什么验靡? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任倍宾,我火速辦了婚禮,結果婚禮上晴叨,老公的妹妹穿的比我還像新娘凿宾。我一直安慰自己,他們只是感情好兼蕊,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布初厚。 她就那樣靜靜地躺著,像睡著了一般孙技。 火紅的嫁衣襯著肌膚如雪产禾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天牵啦,我揣著相機與錄音亚情,去河邊找鬼。 笑死哈雏,一個胖子當著我的面吹牛楞件,可吹牛的內容都是我干的衫生。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼土浸,長吁一口氣:“原來是場噩夢啊……” “哼罪针!你這毒婦竟也來了?” 一聲冷哼從身側響起黄伊,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤泪酱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后还最,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墓阀,經...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年拓轻,在試婚紗的時候發(fā)現(xiàn)自己被綠了斯撮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡悦即,死狀恐怖吮成,靈堂內的尸體忽然破棺而出橱乱,到底是詐尸還是另有隱情辜梳,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布泳叠,位于F島的核電站作瞄,受9級特大地震影響,放射性物質發(fā)生泄漏危纫。R本人自食惡果不足惜宗挥,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望种蝶。 院中可真熱鬧契耿,春花似錦、人聲如沸螃征。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盯滚。三九已至踢械,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魄藕,已是汗流浹背内列。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留背率,地道東北人话瞧。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓嫩与,卻偏偏與公主長得像,于是被迫代替她去往敵國和親交排。 傳聞我的和親對象是個殘疾皇子蕴纳,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內容