前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[iOS学习笔记]·第三方网络图片处理框架:SDWebImage(官方文档翻译篇)

[iOS学习笔记]·第三方网络图片处理框架:SDWebImage(官方文档翻译篇)

作者头像
陈满iOS
发布2018-09-10 11:10:57
3.5K0
发布2018-09-10 11:10:57
举报
文章被收录于专栏:陈满iOS陈满iOS

这篇文章翻译自https://github.com/rs/SDWebImage 。目前,虽然AFNetworking也提供了图片下载及缓存策略,但更专业的时候,图片加载框架一般用SDWebImage,正如主流APP(如QQ和微信)会用到。当然,只看官方文档是不够的,需要进一步查阅源代码方能理解SDWebImage的功能。

该库提供了具有缓存支持的异步图像下载器。为方便起见,我们为UI元素例如UIImageView,UIButton,MKAnnotationView等类添加了categories。

1. 特征


  • 为UIImageView,UIButton,MKAnnotationView的Categories添加了有关网络图像和高速缓存管理的Categories
  • 异步图像下载器
  • 异步内存+磁盘图像缓存,它具有自动缓存到期处理
  • 后台图像解压缩
  • 保证相同的URL不会被下载多次
  • 保证虚假URLs不会重复重试
  • 保证主线程永远不会被阻止
  • 好的性能!
  • 使用GCD和ARC

2. 支持的图像格式


  • UIImage支持的图像格式(JPEG,PNG,...)包括GIF
  • WebP格式,包括动画WebP(使用WebP subspec)

3. 系统要求


  • iOS 7.0或更高版本
  • tvOS 9.0或更高版本
  • watchOS 2.0或更高版本
  • OS X 10.8或更高版本
  • Xcode 7.3或更高版本
向后兼容性

4. 入门指南


5. 谁使用它


找出谁使用SDWebImage并将您的应用程序添加到列表中。

6. 交流


  • 如果需要帮助,请使用stackoverflow。 (Tag'sdwebimage')
  • 如果你想问一个一般的问题,请使用Stack Overflow
  • 如果您发现错误,请打开一个issue。
  • 如果您有功能请求,请打开一个issue。
  • 如果您想贡献,请提交拉动请求。

7. 如何使用


代码语言:javascript
复制
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"]];
代码语言:javascript
复制
Swift:

import SDWebImage

imageView.sd_setImage(with: URL(string: "http://www.domain.com/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png"))

8. 动画图像(GIF)支持


  • 从4.0版本开始,我们依靠FLAnimatedImage来处理我们的动画图像。
  • 如果您使用cocoapods ,请添加pod 'SDWebImage/GIF' Cocapods到您的podfile。
  • 要使用它,只需确保使用FLAnimatedImageView而不是UIImageView。
  • 注意:仍然有一个向后兼容的功能,所以如果你仍然试图用UIImageView加载一个GIF,它将只显示第一帧作为静态图像。
  • 重要提示:FLAnimatedImage仅适用于iOS平台,因此对于所有其他平台(OS X,tvOS,watchOS),我们将回退到上述的向后兼容性。

9. 常见问题


9.1 UITableViewCell与使用动态图像的大小尺寸

UITableView根据单元格的第一个图像集,确定图像的大小尺寸。如果远程图像的尺寸与占位符图像的大小不同,您可能会遇到奇怪的变形缩放问题。以下文章提供了解决此问题的方法:http://www.wrichards.com/blog/2011/11/sdwebimage-fixed-width-cell-images/

9.2 处理图像刷新

默认情况下,SDWebImage执行非常积极的缓存。它完全无视HTTP服务器返回的各种缓存控制头,并缓存返回的图像且不受时间限制。这意味着您的图像URL是指向永远不会改变的图像的静态网址。如果指向的图像发生变化,则网址的某些部分应当相应更改。

如果您无法控制您正在使用的图像服务器,那么当内容更新时,您可能无法更改该URL。例如,Facebook头像URL就是这种情况。在这种情况下,您可以使用该SDWebImageRefreshCached标志。这将稍微降低性能,但这会重视HTTP缓存控制头:

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

9.3 添加一个进度指示器

在你调用sd_setImageWithURL之前,添加代码如下:

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

10. 安装


在您的项目中使用SDWebImage有三种方法:

  • 使用CocoaPods
  • 使用Carthage
  • 通过将项目复制到您的存储库中

10.1 使用CocoaPods安装

CocoaPods是Objective-C的依赖管理器,它可以自动化并简化在项目中使用第三方库的过程。有关详细信息,请参阅“ 入门” 部分。

10.1.1 Podfile
代码语言:javascript
复制
platform :ios, '7.0'
pod 'SDWebImage', '~>3.8'

如果您使用Swift,请确保添加use_frameworks!并将目标设置为iOS 8+:

代码语言:javascript
复制
platform :ios, '8.0'
use_frameworks!
10.1.2 子模块(subspecs)

现在有4个可以的子模块:CoreMapKitGIFWebP(这意味着你只能安装部分SDWebImage模块。默认情况下,你只会得到Core,所以如果你需要WebP,你需要指定它)。

Podfile示例:

代码语言:javascript
复制
pod 'SDWebImage/WebP'

10.2 使用Carthage安装(iOS 8+)

Carthage是Swift和Objective-C的轻量级依赖管理员。它利用CocoaTouch模块,并且比CocoaPods的侵入性更小。

要安装Carthage,请遵循Carthage的说明

Cartfile

代码语言:javascript
复制
github "rs/SDWebImage"

10.3 通过克隆仓库安装

请参阅手动安装

10.4 导入源文件中的headers

在需要使用库的源文件中,导入头文件:

代码语言:javascript
复制
#import <SDWebImage/UIImageView+WebCache.h>

10.5 构建工程

到这里,您的workspace应该能没有错误地被构建。如果您遇到问题,请发邮件到社区可以帮助您解决问题。

11. 作者


12. 合作方


13. 许可证


所有源代码均获得MIT许可证许可

14. 架构图


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.07.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 特征
  • 2. 支持的图像格式
  • 3. 系统要求
  • 4. 入门指南
  • 5. 谁使用它
  • 6. 交流
  • 7. 如何使用
  • 8. 动画图像(GIF)支持
  • 9. 常见问题
    • 9.1 UITableViewCell与使用动态图像的大小尺寸
      • 9.2 处理图像刷新
        • 9.3 添加一个进度指示器
        • 10. 安装
          • 10.1 使用CocoaPods安装
            • 10.2 使用Carthage安装(iOS 8+)
              • 10.3 通过克隆仓库安装
                • 10.4 导入源文件中的headers
                  • 10.5 构建工程
                  • 11. 作者
                  • 12. 合作方
                  • 13. 许可证
                  • 14. 架构图
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档