91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SDWebImage的實現原理(UIImageView+WebCach)

發布時間:2020-06-28 15:54:08 來源:網絡 閱讀:836 作者:禪信23 欄目:移動開發


        1.作用:

        SDWebImageView的功能很強大,其中UIImageView+WebCach.h的功能主要是下載圖片,設置圖片緩存.


        2.原理:

        下載圖片的原理:通過圖片的網站地址URL異步下載圖片;

         緩存圖片的原理:下載完成的圖片會被保存的內存和文件中;加載圖片的時候首先會到內存中去找圖片,如果沒有就到文件中找,再沒有才下載圖片。

 

        3.用法:

        導入第三方庫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
        {
            //異步下載圖片,主線程加載,正確
            //手動實現多級緩存(滑動的時候需要重新下載)
            [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)導入三方庫SDWebImage

        (2)導入頭文件

#import "UIImageView+WebCache.h"

        (3)一句話搞定

[cell.posterImage sd_setImageWithURL:[NSURL URLWithString:album.poster]placeholderImage:[UIImage p_w_picpathNamed:@"s0"]];


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通山县| 侯马市| 衡水市| 乾安县| 九台市| 绥德县| 会昌县| 隆林| 新乡县| 五原县| 华坪县| 建德市| 壤塘县| 馆陶县| 仪陇县| 静宁县| 杨浦区| 平和县| 东兰县| 射洪县| 平江县| 马尔康县| 华蓥市| 喜德县| 泰和县| 漳平市| 罗城| 河池市| 尤溪县| 观塘区| 德保县| 宜兴市| 科技| 巨野县| 辽源市| 蒲城县| 安福县| 峨山| 登封市| 双江| 舒城县|