您好,登錄后才能下訂單哦!
1.作用:
SDWebImageView的功能很強(qiáng)大,其中UIImageView+WebCach.h的功能主要是下載圖片,設(shè)置圖片緩存.
2.原理:
下載圖片的原理:通過圖片的網(wǎng)站地址URL異步下載圖片;
緩存圖片的原理:下載完成的圖片會(huì)被保存的內(nèi)存和文件中;加載圖片的時(shí)候首先會(huì)到內(nèi)存中去找圖片,如果沒有就到文件中找,再?zèng)]有才下載圖片。
3.用法:
導(dǎo)入第三方庫SDWebImage
頭文件:UIImageView+webCache.h
主要語句:
[cell.posterImage sd_setImageWithURL:[NSURL URLWithString:album.poster]placeholderImage:[UIImage p_w_picpathNamed:@"s0"]];
4.例子:使用album中的圖片地址字符串,加載圖片到UITableViewCell上。
不用SDWebImageView的方法:
@property(nonatomic,strong)NSMutableDictionary *p_w_picpathMutableDic; NSData *readData = self.p_w_picpathMutableDic[album.poster]; if(readData) { cell.posterImage.p_w_picpath = [UIImage p_w_picpathWithData:readData]; } else { NSString *filePath = [self generateFilePath:album.poster]; NSData *dataFromFile = [NSData dataWithContentsOfFile:filePath]; if(dataFromFile) { cell.p_w_picpathView.p_w_picpath = [UIImage p_w_picpathWithData:filePath]; self.p_w_picpathMutableDic[album.poster] = dataFromFile; } else { //異步下載圖片,主線程加載,正確 //手動(dòng)實(shí)現(xiàn)多級緩存(滑動(dòng)的時(shí)候需要重新下載) [self downloadImageViewCell:cell withAlbum:album]; [dataFromFile writeToFile:filePath atomically:YES]; self.p_w_picpathMutableDic[album.poster] = dataFromFile; } } //異步下載圖片的方法 - (void)downloadImageViewCell:(MXTableViewCell*)cell withAlbum:(MXAlbum *)album { dispatch_queue_t globalQueue = dispatch_get_global_queue(0, 0); dispatch_async(globalQueue, ^{ NSString *p_w_picpathStr = album.poster; NSURL *url = [NSURL URLWithString:p_w_picpathStr]; NSData *p_w_picpathData = [NSData dataWithContentsOfURL:url]; dispatch_async(dispatch_get_main_queue(), ^{ cell.posterImage.p_w_picpath = [UIImage p_w_picpathWithData:p_w_picpathData]; }); }); } //找文件的路徑 - (NSString *)generateFilePath:(NSString *)p_w_picpathURLStr { NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)firstObject]; NSString *p_w_picpathName = [p_w_picpathURLStr lastPathComponent]; return [cachesPath stringByAppendingPathComponent:p_w_picpathName]; }
采用SDWebImage的方法
(1)導(dǎo)入三方庫SDWebImage
(2)導(dǎo)入頭文件
#import "UIImageView+WebCache.h"
(3)一句話搞定
[cell.posterImage sd_setImageWithURL:[NSURL URLWithString:album.poster]placeholderImage:[UIImage p_w_picpathNamed:@"s0"]];
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。