前端时间想详细的了解下AFNetworking库,所以想着看看官方的API吧。想想既然看看就做下笔记吧,既然做了笔记为何不试着翻译一下呢。然后就有了之前的文章《AFNetworking说明书》. 之后突然有时间觉得空闲了,就想着再看一篇API文档吧。 选中了《SDWebImage说明书》这篇文章。选中这个原因是使用的多,并且评论说代码风格好。与AFNetworking说明书不分上下。

推荐下自己的文章哈。有兴趣的可以看看,当然本人英文菜鸟,翻译不对的地方,请多多赐教。

涉及到的类,分类和协议需要点击跳转到新页面查看。

这个库提供一个具有缓存功能的异步图片下载器。为了方便,我们添加了UI元素的分类,如UIImageView, UIButton, MKAnnotationView。

特性

  • 创建分类为UIImageView,UIButton,MKAnnotationView增加网络图片和缓存管理。
  • 一个异步的图片下载器。
  • 一个具有自动缓存过期处理的异步内存+磁盘的图片缓存。
  • 一个后台的图片解压器。
  • 确保相同的URL不会下载多次。
  • 确保错误的URL不会一次又一次的重试。
  • 确保主线程不会被阻塞。
  • 性能优化。
  • 使用GCD 和 ARC。

支持图片格式化

  • 由UIImage支持的图片格式,如JPEG,PNG等,包括GIF。
  • WebP格式,包含动态WebP(使用WebP子空间)。

要求

  • iOS 7.0或以上版本
  • tvOS 9.0或以上版本
  • watchOS 2.0或以上版本
  • OS X10.8或以上版本
  • Xcode7.3或以上版本

向后兼容

  • iOS5和6版本,使用3.想到3.7.6之间的任意版本。
  • 小于iOS5.0的版本,请使用最后的2.0版本。

开始

  • 阅读“Readme文档”。
  • 阅读“如果使用章节”。
  • 阅读“@CocoaDocs文档”。
  • 阅读“为何SDWebImage比X好”。
  • 从Github下载工程或使用CocoaPods更简单尝试SDWebImage样例。
  • 查看“安装步骤”。
  • 阅读“SDWebImage4.0迁移导向”了解3.x到4.x的变化。

谁在使用

  • 找出“谁在使用SDWebImage”并添加你的app到列表中。

交流

  • 如果你需要帮助,请使用Stack Overflow。(‘sdwebiamge’标签)
  • 如果你想询问一般的问题,请使用Stack Overflow。
  • 如果有发现一个bug,请新开一个问题。
  • 如果你有一个特性请求,请新开一个问题。
  • 如果有想投稿,请提交一个pull请求。

怎么使用

Objective-c

#import <SDWebImage/UIImageView+WebCache.h>
...
[imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
复制代码

Swift

import SDWebImageimageView.sd_setImage(with: URL(string: "http://www.domain.com/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png"))
复制代码
  • 想了解怎么使用这个库和清晰示例的详细信息,详见“怎么使用的详情”。

动画图片(GIF)支持

  • 从4.0版本开始,我们依赖FLAnimatedImage来处理我们的动画图像。
  • 如果你使用cocoapods,添加‘SDWebImage/GIF’到你的podfile文件。
  • 使用它,只需确保你使用FLAnimatedImageView代替UIImageView。
  • **注意:**有一个向后兼容特性,所以如果你任然尝试加载GIF到UIImageView中,它只会显示第一帧的静态图片。
  • **重要:**FLAnimatedImage只工作在iOS平台。在OX X系统,使用NSImageView并设置animates为YES来显示整个动画图片,设置为NO则只显示第一帧。其他的所有平台(tvOS,watchOS),我们会退回到上面描述的向后兼容特性。

常见问题

UITableViewCell中使用动态图片大小

UITableView通过检测第一张图片的大小来设置一个单元格。如果你的远程图片与你的默认图片大小不一致,有可能碰到奇怪的图片变形问题。以下的文章提供了一个解决这个问题的思路:[www.wrichards.com/blog/2011/1…](www.wrichards.com/blog/2011/1…).

处理图片刷新

SDWebImage默认具有非常强烈的缓存机制。它会忽略HTTP服务器返回中控制头的所有缓存类型,将无限制的缓存返回的图片。它意味着你的图片URLS是静态的URLS并指向绝不会修改的图片。如果指向的图片发生了改变,URL部分也应该相应的修改。 如果你没有控制你正在使用的图片服务器,那么当图片内容发生修改时你不能修改图片的URL。这种情况以Facebook的头像URLS为例。这种情况下,你可以使用SDWebImageRefreshCached标签。这将稍微降低性能但是将遵守HTTP缓存控制头:

[imageView sd_setImageWithURL:[NSURL URLWithString:@"https://graph.facebook.com/olivier.poitrey/picture"]placeholderImage:[UIImage imageNamed:@"avatar-placeholder.png"]options:SDWebImageRefreshCached];
复制代码

添加一个进度指示器

在你调用sd_setImageWithURL之前添加以下代码

[imageView sd_setShowActivityIndicatorView:YES];
[imageView sd_setIndicatorStyle:UIActivityIndicatorViewStyleGray];
复制代码
imageView.sd_setShowActivityIndicatorView(true)
imageView.sd_setIndicatorStyle(.Gray)
复制代码

安装

一共有3个方法在你的工程中使用SDWebImage:

  • 使用CocoaPods
  • 使用Carthage
  • 通过克隆工程添加到你的仓库

PODFILE

platfrom :ios, '7.0'
pod 'SDWebImage', '~> 4.0'
复制代码

如果你在使用Swift,确保添加了use_frameworks!和设置目标版本为iOS 8+:

platform: ios, '8.0'
use_frameworks!
复制代码

SUBSPECS 现在有4个有效的子模块:Core,MapKit,GIF和WebP(这意味着你可以只安装SDWebImage的指定模块。默认,你只获取Core模块,所以如果你需要WebP,你需要指定它)。 Podfile样例:

pod 'SDWebImage/WebP'
复制代码

CARTFILE

github "rs/SDWebImage"
复制代码

通过克隆仓库安装

  • 详见“手动安装”。

在你的源文件中引入头文件

在你需要使用这个库的源文件中,引入头文件:

##import <SDWebImage/UIImageView+WebCache.h>
复制代码

编译工程

这点呢,你的工作空间编译不能有错误。如果你有问题,发送你的问题,社区可以帮助你解决它。

作者

  • Olivier Poitrey

合作者

  • Konstantinos K.
  • Bogdan Poplauschi
  • Chester Liu

许可

所有源代码的许可都在MIT许可中。

架构

类说明

  • SDImageCache
  • SDImageCacheConfig
  • SDWebImageDownloadToken
  • SDWebImageDownloader
  • SDWebImageDownloaderOperation
  • SDWebImageManager
  • SDWebImagePrefetcher

协议说明

  • SDWebImageDownloaderOperationInterface
  • SDWebImageManagerDelegate
  • SDWebImageOperation
  • SDWebImagePrefetcherDelegate

分类说明

  • FLAnimatedImageView(WebCache)
  • MKAnnotationView(WebCache)
  • NSData(ImageContentType)
  • NSImage(WebCache)
  • UIButton(WebCache)
  • UIImage(ForceDecode)
  • UIImage(GIF)
  • UIImage(MultiFormat)
  • UIImage(WebP)
  • UIImageView(HighlightedWebCache)
  • UIImageView(Webcache)
  • UIView(WebCache)
  • UIView(WebCacheOperation)

常量说明

  • SDImageCacheType
  • SDImageFormat
  • SDWebImageDownloaderExecutionOrder
  • SDWebImageDownloaderOptions
  • SDWebImageOptions

// END 拉下阅读量而已,没有干货。 接下去想学习下YY大神的代码,希望能够坚持看完吧。Come on!!!

SDWebImage中文说明相关推荐

  1. iOS之SDWebimage下载图片链接带中文处理

    图片连接存到了一个数组中,下载一张添加一张.但是发现有时候只显示占位图不显示图片,刚开始以为是网络慢,下载需要一段时间,但是等了好久仍然没有.打断点查看了一下,原来是因为图片链接包含中文,这样的话下载 ...

  2. iOS - 常用的iOS Mac框架和库以及常用的中文开发博客

    对于iOS以及Mac开发中常用到的一些框架,以及比较好的技术博客做了总结: 主要内容如下: UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关 隐藏与显示 HUD与Toast 对话框 ...

  3. 常用iOS、Mac框架和库及常用中文开发博客

    常用iOS.Mac框架和库及常用中文开发博客 文章来源:http://www.th7.cn/Program/IOS/201507/506590.shtml 目录 UI 下拉刷新 模糊效果 AutoLa ...

  4. linux/docker个人服务器项目中文变问号??,时间差8小时问题解决方法,最新,最有效

    前段时间在腾讯云上面买了一台个人服务器,在搭建好web项目的时候,在项目中录入中文,全部变成了问号,时间也错了,百思不得其解,后来我尝试着修改docker编码,修改系统语言,都无法改变.后来我把项目从 ...

  5. python3+ 解决写入中文乱码的问题

    case1: json格式 import json data = [{'id': ' 002', 'name': ' 小明', 'type': ' Grass', 'typeTwo': ' Poiso ...

  6. Visual Studio 中文显示乱码问题

    今天在码云上Fork了一个开源工程,编译环境是Visual Studio C++, 由于自己本地平台主要是进行Linux开发,平时文档编码格式都是utf-8的,编译没问题,但运行起来就是乱码,就像下图 ...

  7. 零基础入门--中文命名实体识别(BiLSTM+CRF模型,含代码)

    https://github.com/mali19064/LSTM-CRF-pytorch-faster 中文分词 说到命名实体抽取,先要了解一下基于字标注的中文分词. 比如一句话 "我爱北 ...

  8. 超详细中文预训练模型ERNIE使用指南-源码

    作者 | 高开远,上海交通大学,自然语言处理研究方向 最近在工作上处理的都是中文语料,也尝试了一些最近放出来的预训练模型(ERNIE,BERT-CHINESE,WWM-BERT-CHINESE),比对 ...

  9. CMD 输入中文看不到输入法的解决方法

    最近在使用CMD命令行的时候,输入拼音的时候,没有列出对应的中文选项,只有下划线.如下图. 这是因为你正在使用的是新版,只需要还原到旧版本即可 然后重启cmd. 这个时候就能正常显示拼音选项了.

最新文章

  1. 数据蒋堂 | 大清单报表应当怎么做?
  2. Kanzi常用操作1
  3. How Does Maven Work
  4. SpringMVC底层数据传输校验的方案(修改版)
  5. java重定向设置header_java – 重定向时将标题添加到Zuul
  6. 给新手程序猿的16个必备小妙招
  7. ORACLE HANDBOOK系列之十一:分区(Partition)
  8. 第一季3:HI3518E方案整体架构介绍(硬件和软件支持)
  9. 【NS2】在linux下安装低版本GGC
  10. 评论后的Ajax和刷新分页,Wordpress Ajax 评论分页/翻页 – Fatesinger
  11. SSH客户端常用工具SecureCRT操作
  12. 云原生解决了什么问题?
  13. linux shell写日志,Linux shell编程之文件内容写入和日志记录
  14. 2017美赛C题论文学习笔记
  15. trucksim安装教程
  16. 《Java 8 实战》 学习笔记一(行为参数化)
  17. 免费好用的 Apple 工具(Windows 适用)
  18. 用大数据感知美德的力量
  19. android 禁用触摸屏,animation时禁用所有触摸屏交互
  20. ubuntu18.04安装CUDA

热门文章

  1. Alpha 冲刺报告(8/10)
  2. 输出内容时后面显示乱码
  3. js实现图片轮播(终结版)
  4. 趋势科技实习面试后感
  5. 深入理解JavaScript类数组
  6. centos和readhat下安装python2.7
  7. SBO应用技术一则-格式化
  8. Android 获取keystore SHA1方法
  9. 不惧困难,阿特拉斯机器人展示超强平衡能力
  10. java性能优化方案4——不要调用高开销方法