在上一篇笔记《多线程技术的综合应用》中,我们通过一个示例来演示了一下多线程技术的使用。在下载网络图片的过程中,写了很多代码,各种判断、各种缓存和优化,写了100多行代码,非常的麻烦!其实,如果使用SDWebImage框架的话,只需要一行代码就可以搞定。下面,我们就用这个框架来改造我们的代码。
将SDWebImage框架的核心代码文件拖入到我们的项目中,在ViewController中包含头文件"UIImageView+WebCache.h",来到- tableView: cellForRowAtIndexPath:这个方法中,修改我们之前写的代码:
// MARK:- 返回tableView中每一行cell的数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// 定义cell的可重用标识符
static NSString *reuseIdentifier = @"apps";
// 根据可重用标识符去缓存池中取出可重用的cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
// 从数组apps中取出模型数据
ESApps *apps = self.apps[indexPath.row];
// 根据模型中的数据给cell设置相应的数据
cell.textLabel.text = apps.name; // 设置应用的名称
cell.detailTextLabel.text = apps.download; // 设置应用的下载量
// 使用SDWebImage框架中的方法来下载网络图片
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:apps.icon] placeholderImage:[UIImage imageNamed:@"placeholder"]];
/**
* 第一个参数 : 下载图片的URL地址;
* 第二个参数 : 占位图片。
*/
// 返回cell
return cell;
}
只需要用imageView调用- sd_setImageWithURL: placeholderImage:这个方法,然后再将图片的URL地址和占位图片作为参数传递过去,所有的工作都结束了。我们在上一篇笔记中所做的一切工作,- sd_setImageWithURL: placeholderImage:这个方法内部都已经帮我们实现了!可以运行程序看一下实际效果:
程序运行的效果跟我们之前是一样的,但是,需要我们自己动手写的代码少了很多。由此可见,SDWebImage是多么的强大!接下来,我们将学习SDWebImage这个框架中常用的一些方法。
一、SDWebImage中常用的方法