该库提供了具有缓存支持的异步图像下载器。因此可以使用SDWebImage来实现UIImageView加载来自互联网的远程图片。
SDWebImage GitHub
在项目中创建一个Podfile文件,在终端中vim Podfile
,输入如下:
platform :ios, '7.0'
target 'MyApp' do
pod "SDWebImage"
end
保存退出后,用pod install
安装。
#import "UIImageView+WebCache.h"
以下简单介绍一下在SDEebImage中常用的方法:
//图片缓存的基本方法
[self.image1 sd_setImageWithURL:imagePath1];
//用block 可以在图片加载完成之后做些事情
[self.image2 sd_setImageWithURL:imagePath2 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
NSLog(@"这里可以在图片加载完成之后做些事情");
}];
//给一张默认图片,先使用默认图片,当图片加载完成后再替换
[self.image1 sd_setImageWithURL:imagePath1 placeholderImage:[UIImage imageNamed:@"default"]];
//前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;
}