標籤:
從網路上請求圖片時,沒有使用第三方的話,下載會很慢,而且堵塞線程,還要自己處理多線程問題,效果還非常不明顯,使用了SDWebImage這個第三方類庫之後,下載圖片就變的容易多了。
SDWebImage這個類庫提供一個UIImageView類別以支援載入來自網路的遠程圖片。具有緩衝管理、非同步下載、同一個URL下載次數控制和最佳化等特徵
利用CocoaPods安裝SDWebImage
在profile裡放入pod ‘SDWebImage‘, ‘~> 3.7.3‘儲存,pod isntall安裝,完成後就可以使用了
匯入
#import <SDWebImage/UIImageView+WebCache.h>
以下代碼就是使用第三方SDWebImage載入圖片
1 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 2 { 3 NSString *ID = @"hh"; 4 MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; 5 if (!cell) { 6 cell = [[MyTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; 7 } 8 9 10 //將請求的圖片地址放入一個模型,現在取出模型11 Newmodel *goosmodel = arry[indexPath.row];12 Newmodel *model = arry[indexPath.row];13 //轉化為NSURL14 NSURL *urls = [NSURL URLWithString:model.Images];15 // 利用第三方處理圖片16 [cell.baiamge sd_setImageWithPreviousCachedImageWithURL:urls andPlaceholderImage:[UIImage imageNamed:@"圖 片載入"] options:SDWebImageCacheMemoryOnly progress:^(NSInteger receivedSize, NSInteger expectedSize) {17 //這裡是圖片的下載進度18 } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {19 //這裡可以做圖片下載完後要做的事情20 }];
一、options所有選項
1.詳細
*預設URL,當一個URL下載出現故障,這樣庫不會再去下載。
*這個標誌禁用這個黑名單。
*/
sdwebimageretryfailed = 1<<0
*
*映像是在使用者介面的相互作用開始,這個標誌禁用這個功能
*導致延遲下載uiscrollview降速。
*/
sdwebimagelowpriority = 1<<1;
*
這標誌磁碟上的緩衝(下載到記憶體 這個常用)(這個不推薦)
*/
sdwebimagecachememoryonly = 1<<2
*
*可以漸進式下載,顯示的映像是逐步在下載。只顯示一次完全下載映像,映像慢慢顯示的那種---可以不用設定預設映像
*/
sdwebimageprogressivedownload = 1<<3
*
*即使是緩衝的形象方面,和HTTP響應緩衝重新整理控制,如果需要的映像從遠程位置。
*磁碟緩衝將由NSURLCache 而不是sdwebimage處理而導致輕微的效能退化。
*本選項協助對付變化的映像在相同的請求URL,例如Facebook的API的剖面圖的圖片。
*如果一個緩衝的映像refreshed塊稱為一次完成,是一個緩衝映像和一次又一次的最終映像。
*使用這個標誌只有如果你不能讓你的url與嵌入式靜態緩衝破壞參數。
*/
sdwebimagerefreshcached = 1<<4
*
*在iOS 4 +,繼續下載該應用程式的映像去背景。這是實現部分由漫遊系統的研究
*額外的背景讓請求時完成。如果後台工作退出程式操作將被取消。
*/
sdwebimagecontinueinbackground = 1<<5
*
//NSMutableURLRequest.HTTPShouldHandleCookies = YES;
*/
sdwebimagehandlecookies = 1<<6
*
*讓不信任認證啟用SSL。
*測試用途有用。在生產使用的一個警告。
*/
sdwebimageallowinvalidsslcertificates = 1<<7
*
*預設情況下,圖片載入的順序排隊。這個標誌移動它們立即載入隊列的前面,而不是等待載入當前隊列(可能需要一段時間)。
*/
sdwebimagehighpriority = 1<<8
*
*預設,映像是在映像placeholder是載入的載入。這個標誌要載入延遲。
*《placeholder映像直到映像載入後完成。這個設定預設圖片就不管用了哦
*/
sdwebimagedelayplaceholder = 1<<9
*
我們通常不叫transformdownloadedimage代表法在動畫映像
*因為大多數轉碼會損壞它
*使用這個標誌來改變它們
*/
sdwebimagetransformanimatedimage = 1<<10
*
*是預設,映像添加到imageview後下載。但在某些情況下,我們想
*有手在背景映像(它與過濾或添加,應用交叉淡入動畫例如)
*使用這個標誌,如果你想手動設定映像在成功完成時
*/
sdwebimageavoidautosetimage = 1<<11
總的來說,除了sdwebimagerefreshcached和sdwebimagecachememoryonly,其他算是常用吧!用起來沒有太大區別,看具體項目需求
2.簡單
//失敗後URL是黑名單庫不會繼續重試
SDWebImageRetryFailed = 1 << 0,
//映像是在使用者介面的相互作用開始,這個標誌禁用這個功能
*導致延遲下載uiscrollview降速。
SDWebImageLowPriority = 1 << 1,
//只進行記憶體緩衝
SDWebImageCacheMemoryOnly = 1 << 2,
//這個標誌可以漸進式下載,顯示的映像是逐步在下載
SDWebImageProgressiveDownload = 1 << 3,
//重新整理緩衝
SDWebImageRefreshCached = 1 << 4,
//後台下載
SDWebImageContinueInBackground = 1 << 5,
//NSMutableURLRequest.HTTPShouldHandleCookies = YES;
SDWebImageHandleCookies = 1 << 6,
//允許使用無效的SSL認證
//SDWebImageAllowInvalidSSLCertificates = 1 << 7,
//優先下載
SDWebImageHighPriority = 1 << 8,
//延遲預留位置
SDWebImageDelayPlaceholder = 1 << 9,
//改變動畫形象
SDWebImageTransformAnimatedImage = 1 << 10,
IOS開發-第三方SDWebImage下載網狀圖片的使用