美文网首页
简单封装SDWebImage

简单封装SDWebImage

作者: 小苗晓雪 | 来源:发表于2017-10-08 14:43 被阅读12次

    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
    
    

    愿编程让这个世界更美好

    相关文章

      网友评论

          本文标题:简单封装SDWebImage

          本文链接:https://www.haomeiwen.com/subject/ciweyxtx.html