SDWebImage是一个三方类库, 所以要使用它首先要把它引入我们的工程, 其托管在github上: https://github.com/rs/SDWebImage

有几种引入的方法, 一种是直接使用cocoaPods下载安装, 还有一种是直接拉入文件夹, 我们就演示这一种了
第一步: 把下载好的Demo中的"SDWebImage"文件拖入工程, 记得勾选

第二步: 进入Bulid Phases-->Link Binary With Libraries, 点击'+',
引入框架:ImageIO.framework, MapKit.framework, libxml2.2.dylib

第三步: 进入Bulid Setting , 在搜索栏搜索other link, 修改Other Linker Flags
为-ObjC:

OK! 现在我们可以进入正题了, 官方是在UITableView中演示的SDWebImage的使用,
我觉得tabView的显示没集合视图的好看, 所以我就用UICOllectionView来演示了
先引入SDWebImage的头文件: #import "UIImageView+WebCache.h"

创建集合视图, 这步省略了, 也可以用UITableView;
搜索一些图片的url, 创建为全局变量, 因为后面还要使用

老版本的SDWebImage中的方法和新版本的有些许的不同, 就是新版本的方法新都有"sd_"的前缀. 我用的是新版本的,
所以如果你找的是旧版本的话会发现我们的方法不太一样

先来一个基本的语句吧: - (void)sd_setImageWithURL:(NSURL *)url
placeholderImage:(UIImage *)placeholder
UIImageView调用它, url是要下载的图片的url,
placeholder是在图片还没下载完成是imgView显示的占位图片, 当图片下载完成后, 它会被替换成下载好的图片,
如图:

其中的四张相同的图片就是我设置的占位图片.

再创建一个ViewController, 用以显示每张缩略图的大图, 并push进去, 把小图的indexPath,
和urlString传入
SDWebImage除了刚才用的那种外还有几种比较简单的方法, 总的代码总结如下:

//1. 基本语句, 异步加载及缓存图片一步到位

   
[imgView sd_setImageWithURL: url placeholderImage: [UIImage
imageNamed:@"3"]];

//2. 读取缓存, 有占位图片, 可从url下载图片
    
//Handle image refresh(控制图像刷新)
    
//默认情况下,SDWebImage确实非常积极的缓存。它忽略了所有类型的通过HTTP服务器返回的缓存控制头,并且没有时间限制地缓存返回的图像。
这意味着你的图像url是永远不会改变的、指向图像的静态url。如果指向的图片发生了变化,那么url也会相应的跟着变化。如果你不控制你的图像服务
器,当它的内容更新时你不能改变它的url。Facebook头像就是这种情况的例子。在这种情况下,你可以使用
SDWebImageRefreshCached的标志。这将稍微降低性能,但将会考虑到HTTP缓存控制头:
    
[imgView sd_setImageWithURL:url placeholderImage:[UIImage
imageNamed:@"3"] options:SDWebImageRefreshCached];

//3. block
    
[imgView sd_setImageWithURL:url completed:^(UIImage *image, NSError
*error, SDImageCacheType cacheType, NSURL *imageURL) {
         
if (image) {
              
imgView.image = image;
         
}
    
}];

//4. 管理
    
SDWebImageManager *imageManager = [SDWebImageManager
sharedManager];
    
[imageManager downloadImageWithURL:url options:0
progress:^(NSInteger receivedSize, NSInteger expectedSize) {

} completed:^(UIImage *image, NSError *error, SDImageCacheType
cacheType, BOOL finished, NSURL *imageURL) {
         
if (image) {
              
imgView.image = image;
         
}
    
}];

//5. 使用blocks,你将被告知下载进度,完成时是成功还是失败:
    
[imgView sd_setImageWithURL:url placeholderImage:[UIImage
imageNamed:@"3"] completed:^(UIImage *image, NSError *error,
SDImageCacheType cacheType, NSURL *imageURL) {
         
if (error) {
              
NSLog(@"%@", error);
         
}
    
}];

//6. 独立地使用异步图像下载
    
[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:url
options:0 progress:^(NSInteger receivedSize, NSInteger
expectedSize) {

} completed:^(UIImage *image, NSData *data, NSError *error, BOOL
finished) {
         
if (image && finished) {
              
imgView.image = image;
         
}
    
}];

最后效果图:

SDWebImage的一些简单使用的更多相关文章

  1. iOS开发——多线程篇——快速生成沙盒目录的路径,多图片下载的原理、SDWebImage框架的简单介绍

    一.快速生成沙盒目录的路径 沙盒目录的各个文件夹功能 - Documents - 需要保存由"应用程序本身"产生的文件或者数据,例如:游戏进度.涂鸦软件的绘图 - 目录中的文件会被 ...

  2. 常用iOS第三方库以及XCode插件介绍

    第三方库 CocoaPod CocoaPod并不是iOS上的第三方库 而是大名鼎鼎的第三方库的管理工具 在CocoaPod没有出现之前 第三方库的管理是非常痛苦的 尤其是一些大型的库(比如nimbus ...

  3. 个人常用iOS第三方库以及XCode插件介绍

    第三方库 CocoaPod CocoaPod并不是iOS上的第三方库 而是大名鼎鼎的第三方库的管理工具 在CocoaPod没有出现之前 第三方库的管理是非常痛苦的 尤其是一些大型的库(比如nimbus ...

  4. 【转】个人常用iOS第三方库以及XCode插件介绍 -- 不错

    原文网址:http://adad184.com/2015/07/08/my-favorite-libraries-and-plugins/ 第三方库是现在的程序员离不开的东西 不光是APP开发 基本上 ...

  5. iOS之第三方库以及XCode插件介绍

    前言 第三方库是现在的程序员离不开的东西 不光是APP开发 基本上所有的商业项目 都会或多或少的使用到第三方库 Github上Star>100的开源库数量如下 可以看到JS以绝对的优势排名第一 ...

  6. SDWebImage的简单使用

    首先,SDWebImage的git地址是:https://github.com/rs/SDWebImage.我们可以直接到这里进行下载,然后添加到自己的项目中去. 一.使用场景(前提是已经导入了SDW ...

  7. SDWebImage ReadMe.md文档简单说明

    SDWebImage ReadMe.md 文档 附:SDWebImage框架github下载地址:https://github.com/rs/SDWebImage 注1:该文章简单翻译了SDWebIm ...

  8. AJ学IOS 之微博项目实战(8)用AFNetworking和SDWebImage简单加载微博数据

    AJ分享,必须精品 一:效果 没有图文混排,也没有复杂的UI,仅仅是简单的显示出微博数据,主要介绍AFNetworking和SDWebImage的简单用法 二:加载数据AFNetworking AFN ...

  9. SDWebImage 的简单使用方法

    第一步,下载SDWebImage,导入工程 第二步,在需要的地方导入头文件:#import   "UIImageView+WebCache.h" 第三步,调用sd_setImage ...

随机推荐

  1. 在 Ubuntu上使用 MySQL

    MySQL 安装配置 https://help.ubuntu.com/12.04/serverguide/mysql.html MySQL Manual http://dev.mysql.com/do ...

  2. GIS平台结构设计

    前言: WebGIS由于技术发展和功能定位的原因,一般在进行架构设计的时候更多地考虑是否容易实现.用户交互.数据传输方便.渲染效果等方面,对强GIS的应用考虑得少,所以架构上与桌面的GIS平台很不一样 ...

  3. jetty插件实现 热部署

    <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin ...

  4. android studio 3.0 以上 查看sharedpreference

    android studio 3.0 以上 查看sharedpreference 点击android studio 右侧的device file explore,找到data / data 目录: 找 ...

  5. 近期关于CI/CD策略以及git分支模型的思考

    近两个月由于个人处于新环境.新项目的适应阶段,没怎么提笔写些文章.中间有好几个想法想记录下来分享,但受限于没有很好的时间段供自己总结思考(也可以总结为间歇性懒癌和剧癌发作),便啥也没有更新.借这个周末 ...

  6. 网络虚拟化技术 -- LXC TUN/TAP MACVLAN MACVTAP

    Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化,进程空间虚拟化,用户虚拟化,网络虚拟化,等等 [ LXC内核命名空间 ],这里使用LXC的网络虚拟化来模拟多个网络环境. 创 ...

  7. CentOS随笔 - 3.CentOS7安装Oracle 11g xe

    前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 由于手上很多项目都是采用Oracle在进行开发, 所以安装Oracle成为必然. 当然有朋友会想为什么不安装1 ...

  8. 绘制虚线的UIView

    绘制虚线的UIView CAShapeLayer配合贝塞尔曲线可以绘制曲线,笔者继承了一个UIView的子类,并将该子类的backedLayer替换为CAShapeLayer,以此来实现绘制虚线的效果 ...

  9. DRAM(动态)存储器

    一.DRAM的存储元电路 常见的DRAM存储元电路有四管式和单管式两种,它们的共同特点是靠电容存储电荷的原理来存储信息.电容上存有足够多的电荷表示“1”,电容上无电荷表示“0”. 由于电容存储的电荷会 ...

  10. Spotlight监控Linux服务器

    1.安装 Spotlight on Unix 下载地址:http://worlddownloads.quest.com.edgesuite.net/Repository/www.quest.com/l ...