SDWebImage中文说明

WebImage

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

推荐下本身的文章哈。有兴趣的能够看看,固然本人英文菜鸟,翻译不对的地方,请多多赐教。ios

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

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

特性

  • 建立分类为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或以上版本

向后兼容web

  • 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经过检测第一张图片的大小来设置一个单元格。若是你的远程图片与你的默认图片大小不一致,有可能碰到奇怪的图片变形问题。如下的文章提供了一个解决这个问题的思路:[www.wrichards.com/blog/2011/1…](www.wrichards.com/blog/2011/1…).bash

处理图片刷新

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!!!

相关文章
相关标签/搜索