博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS 网络浅析-(六 网络图片获取之三方SDWebImage)
阅读量:4975 次
发布时间:2019-06-12

本文共 5213 字,大约阅读时间需要 17 分钟。

网络图片获取是大多数app所能用到的,由于实际app开发中原生api很少用到,在这里就先不介绍了,以后有时间会给大家介绍。这篇文章会给大家介绍一个三方-SDWebImage。SDWebImage 是一个非常强大的三方。今天给大家主要讲一些主要功能。其他功能可以下载下来自己琢磨琢磨。

*温馨提示:SDWebImage可以在github上下载。*

当需要应用SDWeb时把文件夹里的SDWebImage文件夹放入工程里。

在需要使用网络获取图片的文件里进入头文件#import "UIImageView+WebCache.h"即可使用相应的api。

首先最基本的方法展示(仅获取图片)

代码:

////  ViewController.m//  CX-SDWebImage-master////  Created by ma c on 16/3/18.//  Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"#import "UIImageView+WebCache.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        NSString * urlString = [NSString stringWithFormat:@"http://localhost/tupian.jpg"];        NSURL * url = [NSURL URLWithString:urlString];        UIImageView * imageView = [[UIImageView alloc]init];        imageView.frame = CGRectMake(0, 20, CGRectGetWidth(self.view.frame), 300);        [imageView sd_setImageWithURL:url];        [self.view addSubview:imageView];    }@end

 在很多情况下由于网络的关系,图片无法下载,这是会存在留白现象,这将会是一种很不好的app体验,因此,为了解决这一弊端,此三方还有占位图片(在下载图片的时候,此图片心事出来。)

代码:

////  ViewController.m//  CX-SDWebImage-master////  Created by ma c on 16/3/18.//  Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"#import "UIImageView+WebCache.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        NSString * urlString = [NSString stringWithFormat:@"http://localhost/tupian.jpg"];        NSURL * url = [NSURL URLWithString:urlString];        UIImageView * imageView = [[UIImageView alloc]init];        imageView.frame = CGRectMake(0, 20, CGRectGetWidth(self.view.frame), 300);        [imageView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"图片名称"]];        [self.view addSubview:imageView];    }@end

依旧是有些时候(我也不知道为什么会有这么多有些时候)下载完图片需要某些操作,因此block是一种很不错的选择。

代码:

 

////  ViewController.m//  CX-SDWebImage-master////  Created by ma c on 16/3/18.//  Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"#import "UIImageView+WebCache.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        NSString * urlString = [NSString stringWithFormat:@"http://localhost/tupian.jpg"];        NSURL * url = [NSURL URLWithString:urlString];        UIImageView * imageView = [[UIImageView alloc]init];        imageView.frame = CGRectMake(0, 20, CGRectGetWidth(self.view.frame), 300);        [imageView sd_setImageWithURL:url completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {               NSLog(@"%@",image);        //枚举        NSLog(@"%ld",(long)cacheType);                NSLog(@"%@",imageURL);            }];        [self.view addSubview:imageView];    }/* 结果 2016-03-18 13:12:18.091 CX-SDWebImage-master[4626:283982] 
, {250, 250} 2016-03-18 13:12:18.092 CX-SDWebImage-master[4626:283982] 1 2016-03-18 13:12:18.092 CX-SDWebImage-master[4626:283982] http://localhost/tupian.jpg */@end

 再接着...

很多时候我们查看图片,也就是下载图片的时候,图片上有?圈圈不停的转,这个很好理解,就是简单的风火轮。

但是还有一种现象就是下载的进度。下载进度是怎么实现的的。

下面看代码里是 如何实现的吧。

代码:

////  ViewController.m//  CX-SDWebImage-master////  Created by ma c on 16/3/18.//  Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"#import "UIImageView+WebCache.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        NSString * urlString = [NSString stringWithFormat:@"http://localhost/tupian.jpg"];        NSURL * url = [NSURL URLWithString:urlString];        UIImageView * imageView = [[UIImageView alloc]init];        imageView.frame = CGRectMake(0, 20, CGRectGetWidth(self.view.frame), 300);        /*     options所有选项:          //失败后重试 (经常使用)     SDWebImageRetryFailed = 1 << 0,                //UI交互期间开始下载,导致延迟下载比如UIScrollView减速。(经常使用)     SDWebImageLowPriority = 1 << 1,                //只进行内存缓存     SDWebImageCacheMemoryOnly = 1 << 2,                //这个标志可以渐进式下载,显示的图像是逐步在下载     SDWebImageProgressiveDownload = 1 << 3,                //刷新缓存     SDWebImageRefreshCached = 1 << 4,                //后台下载     SDWebImageContinueInBackground = 1 << 5,                //优先下载     SDWebImageHighPriority = 1 << 8,                //延迟占位符     SDWebImageDelayPlaceholder = 1 << 9,                //改变动画形象     SDWebImageTransformAnimatedImage = 1 << 10,          */        [imageView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"这里是占位图片"] options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize) {//        receivedSize 已经下载大小//        expectedSize 原大小//        动动我们聪明的脑袋,该怎么做呢??//        在这里我就不实现了,大家可以多联系联系。                    } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {               NSLog(@"下载完成");            }];        [self.view addSubview:imageView];    }/* 结果 2016-03-18 13:12:18.091 CX-SDWebImage-master[4626:283982] 
, {250, 250} 2016-03-18 13:12:18.092 CX-SDWebImage-master[4626:283982] 1 2016-03-18 13:12:18.092 CX-SDWebImage-master[4626:283982] http://localhost/tupian.jpg */@end

对于三方SDWebImage-master还有很多的知识没用介绍,感兴趣的童鞋,可以自己试试哦。

转载于:https://www.cnblogs.com/xubaoaichiyu/p/5283918.html

你可能感兴趣的文章
Nginx Location
查看>>
十四、关键字
查看>>
html信息提示框
查看>>
词频统计 WordCounter 软工个人项目
查看>>
实战项目:通过当当API将订单抓取到SAP(二)
查看>>
Silverlight学习笔记(1)——样式的运用
查看>>
JavaScript函数
查看>>
angular5 使用 ueditor
查看>>
基于HTML5的可预览多图片Ajax上传
查看>>
js 比较两个日期的大小
查看>>
vue 中promise 异步请求数据
查看>>
bzoj1069[SCOI2007]最大土地面积
查看>>
团队开发介绍
查看>>
加减密 DES
查看>>
volatile
查看>>
delphi 2010 资源文件使用
查看>>
matlab 生成随机数应用
查看>>
Java线程 — 线程的通信 — 线程的生命周期和状态概述
查看>>
Eclipse下搭建Struts2开发环境
查看>>
CentOS配置163的yum源
查看>>