1. 程式人生 > >iOS開發-進階:最新版SDWebImage的使用

iOS開發-進階:最新版SDWebImage的使用

文章轉自: http://www.cocoachina.com/ios/20141212/10622.html

我之前寫過一篇部落格,介紹快取處理的三種方式,其中最難,最麻煩,最佔記憶體資源的還是圖片快取,最近做的專案有大量的圖片處理,還是採用了SDWebImage來處理,但是發現之前封裝好的程式碼報錯了。研究發現,是我用了新版的SDWebImage,好多方法都變了。

現在把程式碼貼出來,供大家參考。尤其是新手,看完這篇部落格,圖片快取so easy。最後有demo供大家下載,先學習。

第二步,在需要的地方匯入標頭檔案

1 #import "UIImageView+WebCache.h"

第三步,呼叫sd_setImageWithURL:方法快取圖片,注意,這就是新版本的新方法,舊方法是setImageWithURL:。下面將幾個方法都介紹一下。

1. sd_setImageWithURL:

1 2 //圖片快取的基本程式碼,就是這麼簡單 [self.image1 sd_setImageWithURL:imagePath1];

2. sd_setImageWithURL:  completed:

1 2 3 4 5 6 //用block 可以在圖片載入完成之後做些事情 [self.image2 sd_setImageWithURL:imagePath2 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { NSLog(@"這裡可以在圖片載入完成之後做些事情"); }];

3. sd_setImageWithURL:  placeholderImage:

1 2 //給一張預設圖片,先使用預設圖片,當圖片載入完成後再替換
[self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"]];

4. sd_setImageWithURL:  placeholderImage:  completed:

1 2 3 4 5 6 //使用預設圖片,而且用block 在完成後做一些事情 [self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { NSLog(@"圖片載入完成後做的事情"); }];

5. sd_setImageWithURL:  placeholderImage:  options:

1 2 3 //options 選擇方式 [self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"] options:SDWebImageRetryFailed];

其他就不一一介紹了,oc是自文件語言,看方法名就知道幹什麼的了。除了帶options選項的方法,其他的方法都是綜合儲存,也就是記憶體快取和磁碟快取結合的方式,如果你只需要記憶體快取,那麼在options這裡選擇SDWebImageCacheMemoryOnly就可以了。

如果不想深入瞭解,到這裡你已經可以用SDWebimage進行圖片快取了,接下來我要解釋options的所有選項,以及SDWebImage內部執行流程。

一、options所有選項:

1 2 3 4

相關推薦

iOS開發-:新版SDWebImage的使用

文章轉自: http://www.cocoachina.com/ios/20141212/10622.html 我之前寫過一篇部落格,介紹快取處理的三種方式,其中最難,最麻煩,最佔記憶體資源的還是圖片快取,最近做的專案有大量的圖片處理,還是採用了SDWebIma

iOS開發》書籍目錄

archive 憑證 修改 工具 core serial 第二部分 破解 uilabel 第一部分:iOS開發工具 第二部分:iOS開發實踐 第10章 理解內存管理 10.1 引用計數 10.1.1 什麽是引用計數,原理是什麽 10.1.2 我們為什麽需要引用計數 10

iOS開發》閱讀總結

1.引用計數的作用 物件A向物件B傳遞引數物件M ,物件M可能成為物件B的成員變數,也可能只是臨時使用,如果不用引用計數控制,則無法在正確的時間釋放物件M。 案例一:物件A將物件M傳遞給物件B後

Reveal的使用--整理自唐巧的《iOS開發

1.下載一個正版的reveal來安裝。 2.開啟終端,輸入vim ~/.lldbinit建立一個名為.lldbinit的檔案,然後將如下內容輸入檔案中 command alias reveal_load_sim expr (void*)dlopen("/Applicat

iOS開發-使用多個StoryBoard劃分專案

前言:在實際來發中,作者一般都是使用純程式碼的方式進行開發,國內很多開發者都喜歡使用純程式碼進行開發,一方面是程式碼可維護性比較高,另一方面也是因為StoryBoard團隊協作的詬病。不過如果把一個專案拆分為多個StroyBoard,不同的人負責不同的模組

iOS開發-:被誤解的MVC和被神化的MVVM(作者:唐巧)

作者 唐巧 釋出於 2015年11月1日 | 被誤解的 MVC MVC 的歷史 MVC,全稱是 Model View Controller,是模型 (model)-檢視 (view)-控制器 (controller) 的縮寫。它表示的是一種常見的客戶端軟

iOS開發-:MOV格式視訊轉MP4格式

AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:sourceUrl options:nil]; NSArray *compatiblePresets = [AVAssetExportSession exportP

iOS開發-:音訊播放、錄音、視訊播放、拍照、視訊錄製

轉自: http://www.cnblogs.com/kenshincui/p/4186022.html#audioRecord 文章太長了, 如果我這裡寫的質量不好, 請參考原文; 概覽 隨著移動網際網路的發展,如今的手機早已不是打電話、發簡訊那麼

iOS開發-:開啟Remote notifications

需要在Xcode 中修改應用的 Capabilities 開啟Remote notifications,請參考下圖: 修改通知處理函式 當註冊了Backgroud Modes -> Remote notifications 後,notification 處理

iOS開發-:瀑布流基本實現

文章轉自: http://www.jianshu.com/p/78830bdb04a9 一、瀑布流設計方案 不可取.png 過於複雜.png 最優方案.png 二、瀑布流設計思路分析 1、自定義流水佈局中,指定滾動方向、預設列數、行間距、列間距、以及

iOS開發-UITapGestureRecognizer使用技巧

手勢互動是iOS開發中用的比較多的一個類,用途無處不在,這裡面也衍生了很多的需求和用法,UIGestureRecognizer很強大,它的子類包括很多,不過想要更完美的使用它,就需要了解它的底層原理和和一些特殊情況下的處理辦法,本文主要介紹UITapGestur

iOS開發-:JS與OC的互動

在移動應用的專案中, web 相比原生應用有如下優點: 版本可以隨時更新, 效率高;可動態配置要展示的資料, 及資料來源.原生應用中, 如果一個頁面的展示, 需要多次呼叫不同的網路請求, 並且, 上一次請求的結果是下一次請求的引數, 這樣按順序呼叫網路並且等待網路返回的資

iOS開發-:JPush設定標籤與別名的API

標籤與別名 API (iOS) 功能說明 溫馨提示,設定標籤別名請注意處理call back結果。 只有call back 返回值為 0 才設定成功,才可以向目標推送。否則伺服器 API 會返回1011錯誤。所有回撥函式都在主執行緒執行。 提供幾個相關 AP

ios開發之多執行緒01 執行緒 GCD

一 多執行緒基礎 什麼是程序? 程序是指在系統中正在執行的一個應用程式。 每個程序之間是獨立的,每個程序均執行在其專用且受保護的記憶體空間內。 什麼是執行緒? 1個程序要想執行任務,必須得有執行緒(每1個程序至少要有1條執行緒)。 1個執行緒中任務的執行

【原】iOS開發(唐巧)讀書筆記(二)

第三部分:iOS開發底層原理 1、Objective-C物件模型 1.1 isa指標 NSObject.h部分程式碼: NS_ROOT_CLASS @interface NSObject <NSObject> { Class isa; } objc.h部分程式碼: typedef stru

python3-開發 heapq模塊(如何查找大或小的N個元素)

div lam 優勢 排序 portfolio res 函數 多個 items 一、怎樣從一個集合中獲得最大或者最小的 N 個元素列表?   heapq 模塊有兩個函數:nlargest() 和 nsmallest() 可以完美解決這個問題。 import heap

移動端web開發

page 提升 最終 好玩的 ini 進階 body user hang posted @ 2014-11-24 20:09 vajoy 閱讀(4708) 評論(12) 編輯 收藏 三個月前曾寫過一篇跨終端響應式頁面設計入門的博客,上了博客園頭條也得到了不少關註

Java開發之路

為我 變量 kafka 自然 ges 想想 javaweb 目前 沒有 背景一 我接觸Java開發已經一年多了了。 從剛開始生澀地接觸語法,惹得編譯器報各種語法錯誤;到接觸OOD的思想,封裝、繼承、多態,懵懵懂懂地聽說著它們;再到學習Web開發,想著這些也許並不重要,實際用

ESP32搭建3.ubuntu14.04下搭建esp32開發環境 (新版

終端 pat 權限 技術 實例 為我 tro component 直接 硬件為樂鑫出品的ESP32一款集成了wifi和藍牙的集成模塊。 1.首先ctrl+alt+t打開終端,sudo -s選擇用root權限登陸 。 2. 輸入指令:sudo apt-get install

Python學習----第七模塊筆記(Web開發之Django數據庫操作)

long 機制 idt 4.5 gen git 表之間 protoc 小數 4、Django ORM 4.1、連接數據庫 創建Django工程後運行該工程,會在工程根目錄下創建db.sqlite3文件,為Django自帶的sqlite3數據庫(Django自帶的功能也需要數