内容简介:前端时间想详细的了解下AFNetworking库,所以想着看看官方的API吧。想想既然看看就做下笔记吧,既然做了笔记为何不试着翻译一下呢。然后就有了之前的文章《AFNetworking说明书》. 之后突然有时间觉得空闲了,就想着再看一篇API文档吧。 选中了《SDWebImage说明书》这篇文章。选中这个原因是使用的多,并且评论说代码风格好。与AFNetworking说明书不分上下。推荐下自己的文章哈。有兴趣的可以看看,当然本人英文菜鸟,翻译不对的地方,请多多赐教。这个库提供一个具有缓存功能的异步图片下载
前端时间想详细的了解下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通过检测第一张图片的大小来设置一个单元格。如果你的远程图片与你的默认图片大小不一致,有可能碰到奇怪的图片变形问题。以下的文章提供了一个解决这个问题的思路:[ 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> 复制代码
编译工程
这点呢,你的工作空间编译不能有错误。如果你有问题,发送你的问题,社区可以帮助你解决它。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Spring
Bruce Tate、Justin Gehtland / O'Reilly Media, Inc. / 2005-04-12 / USD 29.95
Since development first began on Spring in 2003, there's been a constant buzz about it in Java development publications and corporate IT departments. The reason is clear: Spring is a lightweight Java......一起来看看 《Spring》 这本书的介绍吧!