zoukankan      html  css  js  c++  java
  • IOS开发-第三方SDWebImage下载网络图片的使用

    从网络上请求图片时,没有使用第三方的话,下载会很慢,而且堵塞线程,还要自己处理多线程问题,效果还非常不明显,使用了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,
  • 相关阅读:
    2014下半年软考总结
    Java学习之Filter
    java学习之PreparedStatement
    java学习之dom4j 对 xml的读取
    Windows查看端口占用及杀掉进程
    CentOS压力测试工具Tsung安装和图形报表生成Tsung安装配置
    Tsung压力测试:Openfire
    CentOS Mysql安装配置
    nodejs、webpack
    IOS操作系统上执行monkey测试
  • 原文地址:https://www.cnblogs.com/chenhongios/p/4833282.html
Copyright © 2011-2022 走看看