当前位置: 首页 > 工具软件 > SDWebImage > 使用案例 >

第三方库SDWebImage的基本使用

狄宜然
2023-12-01

SDWebImage的作用

该库提供了具有缓存支持的异步图像下载器。因此可以使用SDWebImage来实现UIImageView加载来自互联网的远程图片。
SDWebImage GitHub

添加到项目中

在项目中创建一个Podfile文件,在终端中vim Podfile,输入如下:

platform :ios, '7.0'
target 'MyApp' do
pod "SDWebImage"
end

保存退出后,用pod install安装。

基本使用

  1. 首先,导入头文件:#import "UIImageView+WebCache.h"
  2. 其次,利用其自带的方法对图片进行缓存加载。

以下简单介绍一下在SDEebImage中常用的方法:

  1. sd_setImageWithURL:
	//图片缓存的基本方法
    [self.image1 sd_setImageWithURL:imagePath1];
  1. sd_setImageWithURL: completed:
	//用block 可以在图片加载完成之后做些事情
    [self.image2 sd_setImageWithURL:imagePath2 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
     NSLog(@"这里可以在图片加载完成之后做些事情");
    }];
  1. sd_setImageWithURL: placeholderImage:
	//给一张默认图片,先使用默认图片,当图片加载完成后再替换
    [self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"]];
  1. sd_setImageWithURL: placeholderImage: completed:
	//前2个的结合
    [self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        NSLog(@"图片加载完成后做的事情");
    }];

在本项目中的运用

DBIListView中加载图片时,会卡很旧,因此在DBIListView.m中引入头文件,并且在UITableViewCell赋值的地方添加图片缓存方法,代码如下:

//DBIListView.m
#import "DBIListView.h"
#import <UIImageView+WebCache.h>

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	DBIListTableViewCell *listTableViewCell = [_listTableView dequeueReusableCellWithIdentifier:listString forIndexPath:indexPath];
	//给一张默认图片`begin_1.jpg`,先使用默认图片,当图片加载完成后再替换
	[listTableViewCell.postersListImageView sd_setImageWithURL:[NSURL URLWithString:listHotIDModel.images.small] placeholderImage:[UIImage imageNamed:@"begin_1.jpg"]];
	
//	//本来使用的方法
//	NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:subjects.images.small]];
//  listTableViewCell.postersListImageView.image = [UIImage imageWithData:data];
                
	return listTableViewCell;
}
 类似资料: