图片封装下载器--自己的代码库--可以直接使用
2015-09-28 20:02
363 查看
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
//NSObject依赖于UIKit,
//声明一个block方法
typedef
void (^ImageDownladerBlock) (UIImage *image);
@protocol ZYPhotoProtocol <NSObject>
@optional
//相当于方法的声明
-(void)imageDownloaderDownloadImage:(UIImage*)image;
@end
@interface ZYImageDownloader :
NSObject
//同步下载
+(UIImage*)imageDownloaderDownloadImageWithURLString:(NSString*)imageURL;
+(void)imageDownloaderDownloadImageWithURLStringByAsyn:(NSString *)imageURL delegate:(id<ZYPhotoProtocol>)
delegate;
+(void)downloadImageWithURLString:(NSString *)imageURL
block:(ImageDownladerBlock)block;
@end
=======================================================
#import "ZYImageDownloader.h"
@interface
ZYImageDownloader ()
@property(nonatomic,strong)
UIImage *image;
@end
@implementation ZYImageDownloader
+(UIImage*)imageDownloaderDownloadImageWithURLString:(NSString *)imageURL
{
//根据传递进来的网址字符串创建请求对象
NSURLRequest *request = [[NSURLRequest
alloc]initWithURL:[NSURL
URLWithString:imageURL]];
//使用Data对象接收同步请求的图片数据
NSData *data = [NSURLConnection
sendSynchronousRequest:request returningResponse:nil
error:nil];
//返回请求后的图片对象
return [UIImage
imageWithData:data];
}
+(void)imageDownloaderDownloadImageWithURLStringByAsyn:(NSString *)imageURL delegate:(id<ZYPhotoProtocol>)delegate
{
NSURLRequest *request = [[NSURLRequest
alloc]initWithURL:[NSURL
URLWithString:imageURL]];
[NSURLConnection
sendAsynchronousRequest:request
queue:[NSOperationQueue
mainQueue] completionHandler:^(NSURLResponse *response,
NSData *data, NSError *connectionError) {
UIImage *image = [UIImage
imageWithData:data];
//只要是代理就必须判断代理对象是否为空且是否响应协议方法
if (delegate && [delegate
respondsToSelector:@selector(imageDownloaderDownloadImage:)]) {
//使用代理传值
[delegate
imageDownloaderDownloadImage:image];
}
}];
}
+(void)downloadImageWithURLString:(NSString *)imageURL
block:(ImageDownladerBlock)block
{
//获取URL并创建请求对象
NSURLRequest *request = [[NSURLRequest
alloc]initWithURL:[NSURL
URLWithString:imageURL]];
//发送异步请求数据消息
[NSURLConnection
sendAsynchronousRequest:request
queue:[NSOperationQueue
mainQueue] completionHandler:^(NSURLResponse *response,
NSData *data, NSError *connectionError) {
//得到图片数据
UIImage *image = [UIImage
imageWithData:data];
//利用block传值--
block(image);
}];
}
@end
#import <UIKit/UIKit.h>
//NSObject依赖于UIKit,
//声明一个block方法
typedef
void (^ImageDownladerBlock) (UIImage *image);
@protocol ZYPhotoProtocol <NSObject>
@optional
//相当于方法的声明
-(void)imageDownloaderDownloadImage:(UIImage*)image;
@end
@interface ZYImageDownloader :
NSObject
//同步下载
+(UIImage*)imageDownloaderDownloadImageWithURLString:(NSString*)imageURL;
+(void)imageDownloaderDownloadImageWithURLStringByAsyn:(NSString *)imageURL delegate:(id<ZYPhotoProtocol>)
delegate;
+(void)downloadImageWithURLString:(NSString *)imageURL
block:(ImageDownladerBlock)block;
@end
=======================================================
#import "ZYImageDownloader.h"
@interface
ZYImageDownloader ()
@property(nonatomic,strong)
UIImage *image;
@end
@implementation ZYImageDownloader
+(UIImage*)imageDownloaderDownloadImageWithURLString:(NSString *)imageURL
{
//根据传递进来的网址字符串创建请求对象
NSURLRequest *request = [[NSURLRequest
alloc]initWithURL:[NSURL
URLWithString:imageURL]];
//使用Data对象接收同步请求的图片数据
NSData *data = [NSURLConnection
sendSynchronousRequest:request returningResponse:nil
error:nil];
//返回请求后的图片对象
return [UIImage
imageWithData:data];
}
+(void)imageDownloaderDownloadImageWithURLStringByAsyn:(NSString *)imageURL delegate:(id<ZYPhotoProtocol>)delegate
{
NSURLRequest *request = [[NSURLRequest
alloc]initWithURL:[NSURL
URLWithString:imageURL]];
[NSURLConnection
sendAsynchronousRequest:request
queue:[NSOperationQueue
mainQueue] completionHandler:^(NSURLResponse *response,
NSData *data, NSError *connectionError) {
UIImage *image = [UIImage
imageWithData:data];
//只要是代理就必须判断代理对象是否为空且是否响应协议方法
if (delegate && [delegate
respondsToSelector:@selector(imageDownloaderDownloadImage:)]) {
//使用代理传值
[delegate
imageDownloaderDownloadImage:image];
}
}];
}
+(void)downloadImageWithURLString:(NSString *)imageURL
block:(ImageDownladerBlock)block
{
//获取URL并创建请求对象
NSURLRequest *request = [[NSURLRequest
alloc]initWithURL:[NSURL
URLWithString:imageURL]];
//发送异步请求数据消息
[NSURLConnection
sendAsynchronousRequest:request
queue:[NSOperationQueue
mainQueue] completionHandler:^(NSURLResponse *response,
NSData *data, NSError *connectionError) {
//得到图片数据
UIImage *image = [UIImage
imageWithData:data];
//利用block传值--
block(image);
}];
}
@end
相关文章推荐
- 代码调试中偶然错误的处理方法
- Python进阶 - HTML获取与解析
- ThinkPHP--空操作处理和空控制器处理
- Introduction to Java Programming编程题12.3<ArrayIndexOutBoundsException>
- python中logging包的使用小结
- 用if语句将三个数按从大到小的顺序输出
- SpringMVC+Hbernate+Spring简单使用
- c++友元
- java 反射方式访问私有属性和方法
- java知识复习提纲(考试需要而写)
- 基于struts2的登录系统
- mybatis代码生成的2种方式
- java自带线程池和队列详细讲解
- github错误 Agent admitted failure to sign using the key Permission denied (publickey)
- 图结构 java实现
- PHP 操作MySQL:增删改查
- C++书目
- C和C++头文件的不同
- 关于结对编程的一些感想
- c++中char[], char*, string的用法初学