SDWebImage中文说明

WebImage

前端时间想详细的了解下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 SDWebImage

imageView.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通过检测第一张图片的大小来设置一个单元格。如果你的远程图片与你的默认图片大小不一致,有可能碰到奇怪的图片变形问题。以下的文章提供了一个解决这个问题的思路:http://www.wrichards.com/blog/2011/11/sdwebimage-fixed-width-cell-images/.

处理图片刷新

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许可中。

架构

类图表
时序图表

类说明

协议说明

分类说明

常量说明

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 228,739评论 6 534
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,634评论 3 419
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 176,653评论 0 377
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,063评论 1 314
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,835评论 6 410
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,235评论 1 324
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,315评论 3 442
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,459评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,000评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,819评论 3 355
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,004评论 1 370
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,560评论 5 362
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,257评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,676评论 0 26
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,937评论 1 288
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,717评论 3 393
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,003评论 2 374

推荐阅读更多精彩内容