码迷,mamicode.com
首页 > 移动开发 > 详细

IOS开发-第三方SDWebImage下载网络图片的使用

时间:2015-09-23 21:02:35      阅读:621      评论:0      收藏:0      [点我收藏+]

标签:

从网络上请求图片时,没有使用第三方的话,下载会很慢,而且堵塞线程,还要自己处理多线程问题,效果还非常不明显,使用了SDWebImage这个第三方类库之后,下载图片就变的容易多了。

SDWebImage这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征

利用CocoaPods安装SDWebImage

在profile里放入pod ‘SDWebImage‘, ‘~> 3.7.3‘保存,pod isntall安装,完成后就可以使用了

导入

#import <SDWebImage/UIImageView+WebCache.h>

以下代码就是使用第三方SDWebImage加载图片

 1 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 2 {
 3     NSString *ID          = @"hh";
 4     MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
 5     if (!cell) {
 6         cell                  = [[MyTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
 7     }
 8    
 9 
10     //将请求的图片地址放入一个模型,现在取出模型
11         Newmodel *goosmodel = arry[indexPath.row];
12             Newmodel *model = arry[indexPath.row];
13    //转化为NSURL
14             NSURL *urls = [NSURL URLWithString:model.Images];
15             //        利用第三方处理图片
16             [cell.baiamge sd_setImageWithPreviousCachedImageWithURL:urls andPlaceholderImage:[UIImage imageNamed:@"图           片加载"] options:SDWebImageCacheMemoryOnly progress:^(NSInteger receivedSize, NSInteger expectedSize) {
17                 //这里是图片的下载进度
18             } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
19                 //这里可以做图片下载完后要做的事情
20             }];

一、options所有选项

1.详细

*默认URL,当一个URL下载出现故障,这样库不会再去下载。
*这个标志禁用这个黑名单。
*/
sdwebimageretryfailed = 1<<0
*
*图像是在用户界面的相互作用开始,这个标志禁用这个功能
*导致延迟下载uiscrollview降速。
*/
sdwebimagelowpriority = 1<<1;
*
这标志磁盘上的缓存(下载到内存 这个常用)(这个不推荐)
*/
sdwebimagecachememoryonly = 1<<2
*
*可以渐进式下载,显示的图像是逐步在下载。只显示一次完全下载图像,图像慢慢显示的那种---可以不用设置默认图像
*/
sdwebimageprogressivedownload = 1<<3
*
*即使是缓存的形象方面,和HTTP响应缓存刷新控制,如果需要的图像从远程位置。
*磁盘缓存将由NSURLCache 而不是sdwebimage处理而导致轻微的性能退化。

*本选项帮助对付变化的图像在相同的请求URL,例如Facebook的API的剖面图的图片。
*如果一个缓存的图像refreshed块称为一次完成,是一个缓存图像和一次又一次的最终图像。
*使用这个标志只有如果你不能让你的url与嵌入式静态缓存破坏参数。
*/
sdwebimagerefreshcached = 1<<4
*
*在iOS 4 +,继续下载该应用程序的图像去背景。这是实现部分由漫游系统的研究
*额外的背景让请求时完成。如果后台工作退出程序操作将被取消。
*/
sdwebimagecontinueinbackground = 1<<5
*


//NSMutableURLRequest.HTTPShouldHandleCookies = YES;
*/
sdwebimagehandlecookies = 1<<6
*
*让不信任证书启用SSL。
*测试用途有用。在生产使用的一个警告。
*/
sdwebimageallowinvalidsslcertificates = 1<<7
*
*默认情况下,图片加载的顺序排队。这个标志移动它们立即加载队列的前面,而不是等待加载当前队列(可能需要一段时间)。
*/
sdwebimagehighpriority = 1<<8
*
*默认,图像是在图像placeholder是加载的加载。这个标志要加载延迟。
*《placeholder图像直到图像加载后完成。这个设置默认图片就不管用了哦
*/
sdwebimagedelayplaceholder = 1<<9
*
我们通常不叫transformdownloadedimage代表法在动画图像
*因为大多数转换代码会损坏它
*使用这个标志来改变它们
*/
sdwebimagetransformanimatedimage = 1<<10
*
*是默认,图像添加到imageview后下载。但在某些情况下,我们想
*有手在背景图像(它与过滤或添加,应用交叉淡入动画例如)
*使用这个标志,如果你想手动设置图像在成功完成时
*/
sdwebimageavoidautosetimage = 1<<11

总的来说,除了sdwebimagerefreshcached和sdwebimagecachememoryonly,其他算是常用吧!用起来没有太大区别,看具体项目需求

2.简单

   //失败后URL是黑名单库不会继续重试
     SDWebImageRetryFailed = 1 << 0,
      
    //图像是在用户界面的相互作用开始,这个标志禁用这个功能
       *导致延迟下载uiscrollview降速。
     SDWebImageLowPriority = 1 << 1,
      
     //只进行内存缓存
     SDWebImageCacheMemoryOnly = 1 << 2,
      
     //这个标志可以渐进式下载,显示的图像是逐步在下载
     SDWebImageProgressiveDownload = 1 << 3,
      
     //刷新缓存
     SDWebImageRefreshCached = 1 << 4,
      
     //后台下载
     SDWebImageContinueInBackground = 1 << 5,
      
     //NSMutableURLRequest.HTTPShouldHandleCookies = YES;
      
     SDWebImageHandleCookies = 1 << 6,
      
     //允许使用无效的SSL证书
     //SDWebImageAllowInvalidSSLCertificates = 1 << 7,
      
     //优先下载
     SDWebImageHighPriority = 1 << 8,
      
     //延迟占位符
     SDWebImageDelayPlaceholder = 1 << 9,
      
     //改变动画形象
     SDWebImageTransformAnimatedImage = 1 << 10,

IOS开发-第三方SDWebImage下载网络图片的使用

标签:

原文地址:http://www.cnblogs.com/chenhongios/p/4833282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!