ios - SDWebImage的基本使用

2020-10-12  本文已影响0人  Fat_Blog

基本使用

//
//  ViewController.m
//  SDWebImageLearn
//
//  Created by MacBook pro on 2020/10/11.
//  Copyright © 2020 MacBook pro. All rights reserved.
//

#import "ViewController.h"
#import <UIImageView+WebCache.h>
#import <SDWebImageManager.h>
#import <SDWebImageDownloader.h>
#import <UIImage+GIF.h>

@interface ViewController ()
@property (nonatomic, strong) UIImageView *imageView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.imageView = [[UIImageView alloc] init];
    self.imageView.frame = CGRectMake(30, 100, 350, 250);
    [self.view addSubview:self.imageView];
    
    
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [self gif];
}

//下载图片而且需要获取下载进度
//自动做好磁盘缓存和内存缓存
- (void)downLoad {
    //这是直接下载图片到imageView上的,而且自动做好内存缓存和磁盘缓存
    /**
     placeholderImage:占位图
     options:0 表示默认的缓存方案
     receivedSize/expectedSize:表示下载进度
     */
    [self.imageView sd_setImageWithURL:[NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1602514957001&di=05cd7984f57a412b71ad741650dd49f7&imgtype=0&src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20171018%2F728aa945618b43bba5f0dd236c58b9e5.jpeg"] placeholderImage:[UIImage imageNamed:@"image"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
        NSLog(@"%ld",receivedSize/expectedSize);
    } completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
        switch (cacheType) {
            case SDImageCacheTypeNone:
                NSLog(@"直接下载");
                break;
            case SDImageCacheTypeDisk:
                NSLog(@"磁盘缓存");
                break;
            case SDImageCacheTypeMemory:
                NSLog(@"内存下载");
                break;
            default:
                break;
        }
    }];
}

//这是单纯地下载图片
//自动做好磁盘缓存和内存缓存
- (void)downLoad2 {
    [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:@"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3706177086,1076559430&fm=26&gp=0.jpg"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
        NSLog(@"%f",1.0*receivedSize/expectedSize);
    } completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) {
        self.imageView.image = image;
    }];
}

//下载图片
//不需要做磁盘缓存和内存缓存
- (void)downLoad3 {
    [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[NSURL URLWithString:@"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3706177086,1076559430&fm=26&gp=0.jpg"] completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {
        //data是图片的二进制数据
        //这个completed块是在子线程进行的,因此如果要给imageView的image赋值时要在主线程中进行
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            self.imageView.image = image;
        }];
    }];
    
}

//播放gif图片
- (void)gif {
    NSURL *url = [NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1602517856184&di=14d2df7654ed95ae8f67af443baf4cf4&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201611%2F04%2F20161104110413_XzVAk.gif"];
    NSData *data = [NSData dataWithContentsOfURL:url];
    UIImage *image = [UIImage sd_imageWithGIFData:data];
    self.imageView.image = image;
    
}
@end

删除内存缓存

#import "AppDelegate.h"
#import <SDImageCache.h>
#import <SDWebImageManager.h>

@interface AppDelegate ()

@end

@implementation AppDelegate

//内存警告
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
    //清空缓存
    //clearDisk:直接删除,然后重新创建
    //cleanDisk:清楚过期的缓存,然后计算剩下缓存的大小,再与设置的最大缓存比较,如果仍然超出那么会继续删除(删除按文件的创建时间的先后顺序)
    [[SDImageCache sharedImageCache] clearDiskOnCompletion:nil];
    //取消当前所有操作
    [[SDWebImageManager sharedManager] cancelAll];
    
    //最大并发数 6
    //缓存文件的保存名称 - 取到图片的url然后对它进行md5加密
    //该框架内部对内存警告的处理方式 - 内部通过监听通知的方式请求缓存
    //该框架进行缓存处理的方式 - NSCache
    //判断图片的类型 - 根据图片的第一个字节进行判断
    //队列中任务的处理方式 - 先进先出
    //下载图片的方式 - 发送网络请求下载图片,利用NSURLConnection
    //请求超过的时间设置为 15s
}
上一篇 下一篇

猜你喜欢

热点阅读