iOS第三方类库之-SDWebImage使用

SDWebImage使用——一个可管理远程图片加载的类库

SDWebImage托管在github上。https://github.com/rs/SDWebImage

这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。

具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。

将SDWebImage类库添加入工程时,一定注意需要添加MapKit.framework,如图所示,因为MKAnnotationView+WebCache.h依赖该framework。

使用示范的代码:

1.UITableView使用UIImageView+WebCache类(基本应用,UIImageView的一个category)

前提#import导入UIImageView+WebCache.h文件,然后在tableview的cellForRowAtIndexPath:方法下:

[cpp] view plaincopyprint?

  1. #import "UIImageView+WebCache.h"
  2. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  3. {
  4. static NSString *MyIdentifier = @"MyIdentifier";
  5. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
  6. if (cell == nil)
  7. {
  8. cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
  9. reuseIdentifier:MyIdentifier] autorelease];
  10. }
  11. // Here we use the new provided setImageWithURL: method to load the web image
  12. [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
  13. placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
  14. cell.textLabel.text = @"My Text";
  15. return cell;
  16. }

基本代码:

[cpp] view plaincopyprint?

  1. [imageView setImageWithURL:[NSURL URLWithString:@<a href="http://www.domain.com/path/image.jpg">http://www.domain.com/path/image.jpg</a>]];

针对iOS4+目标平台,还可以使用如下块语句:

[cpp] view plaincopyprint?

  1. // Here we use the new provided setImageWithURL: method to load the web image
  2. [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
  3. placeholderImage:[UIImage imageNamed:@"placeholder.png"]
  4. success:^(UIImage *image) {... success code here ...}
  5. failure:^(NSError *error) {... failure code here ...}];

2.     使用SDWebImageManager类:可以进行一些异步加载的工作。

[cpp] view plaincopyprint?

  1. SDWebImageManager *manager = [SDWebImageManager sharedManager];
  2. UIImage *cachedImage = [manager imageWithURL:url]; // 将需要缓存的图片加载进来
  3. if (cachedImage) {
  4. // 如果Cache命中,则直接利用缓存的图片进行有关操作
  5. // Use the cached image immediatly
  6. } else {
  7. // 如果Cache没有命中,则去下载指定网络位置的图片,并且给出一个委托方法
  8. // Start an async download
  9. [manager downloadWithURL:url delegate:self];
  10. }

当然你的类要实现SDWebImageManagerDelegate协议,并且要实现协议的webImageManager:didFinishWithImage:方法。

[cpp] view plaincopyprint?

  1. // 当下载完成后,调用回调方法,使下载的图片显示
  2. - (void)webImageManager:(SDWebImageManager *)imageManager didFinishWithImage:(UIImage *)image {
  3. // Do something with the downloaded image
  4. }

3.     独立的异步图像下载
可能会单独用到异步图片下载,则一定要用downloaderWithURL:delegate:来建立一个SDWebImageDownloader实例。

[cpp] view plaincopyprint?

  1. downloader =[SDWebImageDownloader downloaderWithURL:url delegate:self];

这样SDWebImageDownloaderDelegate协议的方法imageDownloader:didFinishWithImage:被调用时下载会立即开始并完成。

4.     独立的异步图像缓存

SDImageCache类提供一个创建空缓存的实例,并用方法imageForKey:来寻找当前缓存。

[cpp] view plaincopyprint?

  1. UIImage*myCachedImage = [[SDImageCache sharedImageCache] imageFromKey:myCacheKey];

存储一个图像到缓存是使用方法storeImage: forKey:

[cpp] view plaincopyprint?

  1. [[SDImageCachesharedImageCache] storeImage:myImage forKey:myCacheKey];

默认情况下,图像将被存储在内存缓存和磁盘缓存中。如果仅仅是想内存缓存中,要使用storeImage:forKey:toDisk:方法的第三个参数带一负值
来替代。

iOS第三方类库之-SDWebImage使用

时间: 2024-10-31 01:22:09

iOS第三方类库之-SDWebImage使用的相关文章

IOS第三方类库之ASIHTTPRequest

ASIHTTPRequest ASIHTTPRequest 是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装.它的特色功能如下:1,下载的数据直接保存到内存或文件系统里2,提供直接提交(HTTP POST)文件的API3,可以直接访问与修改HTTP请求与响应HEADER4,轻松获取上传与下载的进度信息5,异步请求与队列,自动管理上传与下载队列管理机6,认证与授权的支持7,Cookie8,请求与响应的GZIP9,代理请求   下面来两个ASIHTT

iOS第三方类库之FMDatabase

FMDatabase 的使用方法 - (NSString*) getPath { NSArray* paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) ; return [[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"MyTable"] ; } 1.创建数据库 -(void)CreateTable; {

iOS第三方类库之-GDataXMLNode

一.GDataXMLNode说明 GDataXMLNode是Google提供的用于XML数据处理的类集.该类集对libxml2--DOM处理方式进行了封装,能对较小或中等的xml文档进行读写操作且支持XPath语法. 使用方法: 1.获取GDataXMLNode.h/m文件,将GDataXMLNode.h/m文件添加到工程中 2.向工程中增加“libxml2.dylib”库 3.在工程的“Build Settings”页中找到“Header Search Path”项,添加/usr/includ

iOS第三方类库JSPatch(热更新)

原文地址: 一.前言 场景一:我们在做iOS开发的过程中,难免会由于自己的不细心导致一些小问题.如果产品没上线之前发现还好,如果上线了才发现问题,那么问题就大了,可能直接影响KPI,更严重的甚至直接面临着fire. 场景二.一旦上线的产品,如果临时遇到需求变动,那么久必须重新修改代码.一旦修改了项目代码的话,我们就必须重新发版.这样岂不是很麻烦? 现在就来让我们看一下JSPatch,它的出现可以在不发版的情况下动态的自行修复或者添加新的需求. 二.JSPatch简介 JSPatch:它是一个第三

【转】iOS开发常用的第三方类库

原文: http://blog.csdn.net/xiazailushang/article/details/9716043 在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使我们的开发变得更有效率:同时,也可以从它们的源代码中学习到很多有用的东西. Reachability 检测网络连接 用来检查网络连接是否可用:包括WIFI和WWAN(3G/EDGE/CDMA等)两种工作模式. 可以从Apple网站下载到:http://developer.apple.com/libr

iOS常用基础框架和第三方类库

iOS 常用基础框架 框架名称 功能 Foundation 提供OC的基础类(像NSObject).基本数据类型等 UIKit 创建和管理应用程序的用户界面 QuartzCore 提供动画特效以及通过硬件进行渲染的能力 CoreGraphics 提供2D绘制的基于C的API SystemConfiguration 检测当前网络是否可用和硬件设备状态 AVFoundation 提供音频录制和回放的底层API,同时也负责管理音频硬件 CFNetwork 访问和配置网络,像HTTP.FTP和Bonjo

iOS常用第三方类库 Xcode插件

第三方类库(github地址): 1.AFNetworking 网络数据     https://github.com/AFNetworking/AFNetworking 2.SDWebImage 图片缓存 https://github.com/rs/SDWebImage 3.MBProgressHUD 提示框  https://github.com/jdg/MBProgressHUD 4.FMDB 数据库 https://github.com/ccgus/fmdb 5.MJExtension

iOS开发引入第三方类库的问题

在开发iOS程序的过程中,通常在导入第三方的类库(.a/.o)文件会报出一系列的错误: 看似缺少了某个类库文件,但多次检查之后发现,没缺少啥引用的,甚至跟原来的Demo一个都不差,这是怎么回事? 由于第三方类库多数是用C++或者C编写的,在引用过程中,还需要告诉编译器可能会出现的语言种类,以便使用对应的解释器进行解析. OK,那么我们只需要在XCode环境中检查以下几个配置项是否与下面一致即可: TARGETS->Build Settings,搜索 1.Other Linker Flags:-O

IOS网络编程——第三方类库

IOS网络编程——第三方类库 目录 概述 ASIHttpRequest AFNetworking 其他 概述 ASIHttpRequest AFNetworking 其他