简单封装SDWebImage

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

愿编程让这个世界更美好

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容