您的位置:首页 > 编程语言

图片封装下载器--自己的代码库--可以直接使用

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: