SDWebImage基础应用
2015-06-23 14:17
330 查看
iOS中用到的异步加载图片最为广泛的三方库恐怕莫属SDWebImage了。下面记录一些自己使用到该库时候所用到的的基础用法,以后用到了方便来拿
1.最基础的异步加载图片方法,使用该方法,会把所加载的图片缓存到项目沙盒路径下
需导入头文件:#import
"UIImageView+WebCache.h"
[cell.iconImageView
sd_setImageWithURL:[NSURL
URLWithString:urlString]
placeholderImage:[UIImage
imageNamed:@"ic_default_photo.png"]];
2.利用缓存措施,提高加载速度
需导入头文件:
#import "SDWebImageManager.h"
#import
"SDImageCache.h"
NSString *urlString = @"urlString";
UIImage *cacheImage = [[SDImageCache
sharedImageCache]
imageFromDiskCacheForKey:urlString];
if
(cacheImage) {
//如果从缓存中取出了缓存图片,则直接使用
cell.iconImageView.image
= cacheImage;
}
else {
//如果缓存中不存在缓存图片,则下载
[[SDWebImageManager
sharedManager]
downloadImageWithURL:[NSURL
URLWithString:urlString]
options:SDWebImageProgressiveDownload
progress:^(NSInteger
receivedSize, NSInteger expectedSize) {
//此处可以显示加载进度动画
}
completed:^(UIImage *image,
NSError *error,
SDImageCacheType cacheType, BOOL finished,
NSURL *imageURL) {
//下载完成后使用,并把图片写入磁盘缓存,若仅把所加载的图片放到内存缓存,则 toDisk 传入参数:NO,
当然如果不需要显示进度等动画,该语句块中可用第一种方法代替。
if
(image) {
//下载成功
cell.iconImageView.image = image;
[[SDImageCache
sharedImageCache]
storeImage:image
forKey:urlString
toDisk:YES];
}
else {
//下载失败
cell.iconImageView.image
= [UIImage
imageNamed:@"ic_default_photo.png"];
}
}
3.独立的异步图像下载
需导入头文件:#import
"SDWebImageDownloader.h"
[[SDWebImageDownloader
sharedDownloader]
downloadImageWithURL:[NSURL
URLWithString:@""]
options:SDWebImageDownloaderProgressiveDownload
progress:^(NSInteger
receivedSize, NSInteger expectedSize) {
//此处可以显示加载进度动画
} completed:^(UIImage
*image, NSData *data,
NSError *error,
BOOL finished) {
//your code here
}];
4.当我们的应用受到内存警告时候,我们便需要进行一些适当的处理,在AppDelegate中的此方法中做清除图片缓存措施
需导入头文件:
#import "SDWebImageManager.h"
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
[[[SDWebImageManager
sharedManager] imageCache]
clearDisk];
[[[SDWebImageManager
sharedManager] imageCache]
clearMemory];
}
1.最基础的异步加载图片方法,使用该方法,会把所加载的图片缓存到项目沙盒路径下
需导入头文件:#import
"UIImageView+WebCache.h"
[cell.iconImageView
sd_setImageWithURL:[NSURL
URLWithString:urlString]
placeholderImage:[UIImage
imageNamed:@"ic_default_photo.png"]];
2.利用缓存措施,提高加载速度
需导入头文件:
#import "SDWebImageManager.h"
#import
"SDImageCache.h"
NSString *urlString = @"urlString";
UIImage *cacheImage = [[SDImageCache
sharedImageCache]
imageFromDiskCacheForKey:urlString];
if
(cacheImage) {
//如果从缓存中取出了缓存图片,则直接使用
cell.iconImageView.image
= cacheImage;
}
else {
//如果缓存中不存在缓存图片,则下载
[[SDWebImageManager
sharedManager]
downloadImageWithURL:[NSURL
URLWithString:urlString]
options:SDWebImageProgressiveDownload
progress:^(NSInteger
receivedSize, NSInteger expectedSize) {
//此处可以显示加载进度动画
}
completed:^(UIImage *image,
NSError *error,
SDImageCacheType cacheType, BOOL finished,
NSURL *imageURL) {
//下载完成后使用,并把图片写入磁盘缓存,若仅把所加载的图片放到内存缓存,则 toDisk 传入参数:NO,
当然如果不需要显示进度等动画,该语句块中可用第一种方法代替。
if
(image) {
//下载成功
cell.iconImageView.image = image;
[[SDImageCache
sharedImageCache]
storeImage:image
forKey:urlString
toDisk:YES];
}
else {
//下载失败
cell.iconImageView.image
= [UIImage
imageNamed:@"ic_default_photo.png"];
}
}
3.独立的异步图像下载
需导入头文件:#import
"SDWebImageDownloader.h"
[[SDWebImageDownloader
sharedDownloader]
downloadImageWithURL:[NSURL
URLWithString:@""]
options:SDWebImageDownloaderProgressiveDownload
progress:^(NSInteger
receivedSize, NSInteger expectedSize) {
//此处可以显示加载进度动画
} completed:^(UIImage
*image, NSData *data,
NSError *error,
BOOL finished) {
//your code here
}];
4.当我们的应用受到内存警告时候,我们便需要进行一些适当的处理,在AppDelegate中的此方法中做清除图片缓存措施
需导入头文件:
#import "SDWebImageManager.h"
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
[[[SDWebImageManager
sharedManager] imageCache]
clearDisk];
[[[SDWebImageManager
sharedManager] imageCache]
clearMemory];
}
相关文章推荐
- 删除storyboard后需要进行设置
- sql server 判断是否存在数据库,表,列,视图
- SAT阅读词汇总结:语气限定词
- 透过IT大佬的高考专业选择,你的兄弟姐妹可以取得哪些“真经”?
- 【ASP.NET】验证控件
- 设计模式学习之简单工厂+反射+配置文件
- UVa 10739 - String to Palindrome
- Behavioral模式之Observer模式
- Javadoc详解(二)
- ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)
- Flex4+BlazeDS+Spring+Hibernate 整合
- java 免费发送短信实例程序
- 巧克力爱好者匿名顺序图——管理员
- c#实现统计代码执行时间
- android属性动画详解2
- 派生类向基类转换的可访问性
- 【读书笔记:C++ primer plus 第六版 中文版】第8章 函数探幽
- [trouble-shooting]android 无法启动X86模式虚拟机的问题解决。
- 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题
- Eclipse的ADT插件提示版本问题的解决办法