ViewController.m
#import "ViewController.h"
#import "UIImageView+SDWebImage.h" //导入自封装SDWebImage文件
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
#pragma mark - 生命周期
- (void)viewDidLoad {
[super viewDidLoad];
//第一个封装SDWebImage的下载图片方法:
// [self.imageView downloadImage:@"http://服务器地址.../images/testImage.jpg" placeholder:@"01.png"];
//第二个封装SDWebImage的下载图片方法:
[self.imageView downloadImage:@"一个网络图片的地址...jpg" placeholder:@"01" success:^(UIImage *image) {
//下载成功...
} failed:^(NSError *error) {
NSLog(@"%@",error);
} progress:^(CGFloat progress) {
NSLog(@"%@",@(progress));
}];
}
#pragma mark - 内存警告
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
UIImageView+SDWebImage.h
/**
* UIImageView分类方法(封装SDWebImage方法)
*/
#import <UIKit/UIKit.h>
//获取网络图片成功:
typedef void(^DownloadImageSuccessBlock)(UIImage *image);
//获取网络图片失败:
typedef void (^DownloadImageFailedBlock)(NSError *error);
//获取下载图片进度:
typedef void (^DownloadImageProgressBlock)(CGFloat progress);
@interface UIImageView (SDWebImage)
/**
* 异步加载图片
*
* @param url 图片地址
* @param imageName 占位图片名
*/
- (void)downloadImage:(NSString *)url placeholder:(NSString *)imageName;
/**
* 异步加载图片,可以监听下载进度,成功或失败
*
* @param url 图片地址
* @param imageName 占位图片名
* @param success 下载成功
* @param failed 下载失败
* @param progress 下载进度
*/
- (void)downloadImage:(NSString *)url placeholder:(NSString *)imageName success:(DownloadImageSuccessBlock)success failed:(DownloadImageFailedBlock)failed progress:(DownloadImageProgressBlock)progress;
@end
UIImageView+SDWebImage.m
//
// UIImageView+SDWebImage.m
// 04-二次封装SDWebImage
//
// Created by 大欢 on 16/8/4.
// Copyright © 2016年 大欢. All rights reserved.
//
#import "UIImageView+SDWebImage.h"
#import "UIImageView+WebCache.h"
@implementation UIImageView (SDWebImage)
#pragma mark - 下载图片
- (void)downloadImage:(NSString *)url placeholder:(NSString *)imageName
{
[self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:imageName] options:(SDWebImageRetryFailed | SDWebImageLowPriority)];
}
#pragma mark - 获取下载图片百分比的封装方法
- (void)downloadImage:(NSString *)url placeholder:(NSString *)imageName success:(DownloadImageSuccessBlock)success failed:(DownloadImageFailedBlock)failed progress:(DownloadImageProgressBlock)progress
{
[self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:imageName] options:(SDWebImageLowPriority | SDWebImageRetryFailed) progress:^(NSInteger receivedSize, NSInteger expectedSize) {
NSLog(@"progress = %@" , @(receivedSize / expectedSize * 1.0f));
} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
if (!error)
{
NSLog(@"下载成功");
self.image = image;
//成功回调:把图片给我下载完成回调过来:
success(image);
}
else
{
NSLog(@"下载失败");
failed(error);
}
}];
}
@end
网友评论