美文网首页
SDWebImage的使用和剖析

SDWebImage的使用和剖析

作者: 哔哩哔哩智能喵 | 来源:发表于2016-12-09 16:43 被阅读16次
    #import "ViewController.h"
    #import "UIImageView+WebCache.h"
    #import "UIImage+GIF.h"
    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UIImageView *imageView;
    
    @end
    
    @implementation ViewController
    
    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
        [self download2];
    }
    /**
     *  加载图片,打印下载速度
     */
    -(void)download1
    {
        [self.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://img4.duitang.com/uploads/blog/201310/18/20131018213446_smUw4.thumb.600_0.jpeg"] placeholderImage:[UIImage imageNamed:@"7FCCC825B60E5074DE923171542FF637"] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {
            NSLog(@"%f",1.0 * receivedSize / expectedSize );
        } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
            switch (cacheType) {
                
                case 0:
                    NSLog(@"网络下载");
                    break;
                case 1:
                    NSLog(@"磁盘缓存");
                    break;
                case 2:
                    NSLog(@"内存缓存");
                    break;
                 
            }
            
            self.imageView.image = image;
        }];
    }
    /**
     *  加载GIF
     */
    -(void)download2
    {
        UIImage *image = [UIImage sd_animatedGIFNamed:@"39e805d5ad6eddc4f80259d23bdbb6fd536633ca"];
        self.imageView.image = image;
    }
    
    • 清空缓存和取消操作方法

    #import "AppDelegate.h"
    #import "SDWebImageManager.h"
    @interface AppDelegate ()
    
    @end
    
    @implementation AppDelegate
    //当内存发出警报的时候调用该方法,在这个方法里需要清除缓存或内存
    -(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
    {
        /**
         *  清空缓存操作
         cleanDisk:删除过期的文件数据,计算当前未过期的已经下载的文件数据的大小,如果发现该数据大小大于我们设置的最大缓存数据大小,那么程序内部会按照按文件数据缓存的时间从远到近删除,直到小于最大缓存数据为止。
         clearMemory:直接删除文件,重新创建新的文件夹
         */
        [[SDWebImageManager sharedManager].imageCache cleanDisk];
        [[SDWebImageManager sharedManager].imageCache clearMemory];
        /**
         *  取消当前所有的操作
         */
        [[SDWebImageManager sharedManager] cancelAll];
        
    }
    @end
    ```
    - ###SDWebImage的一些常见问题
    
    ```
    
        04 SDWebImage默认的缓存时间是1周
        05 如何播放gif图片
        /*
        5-1 把用户传入的gif图片->NSData
        5-2 根据该Data创建一个图片数据源(NSData->CFImageSourceRef)
        5-3 计算该数据源中一共有多少帧,把每一帧数据取出来放到图片数组中
        5-4 根据得到的数组+计算的动画时间-》可动画的image
        [UIImage animatedImageWithImages:images duration:duration];
        */
    
        06 如何判断当前图片类型,只判断图片二进制数据的第一个字节
        + (NSString *)sd_contentTypeForImageData:(NSData *)data;
        07 内部如何进行缓存处理?使用了NSCache类,使用和NSDictionary类似
        08 沙盒缓存图片的命名方式为对该图片的URL进行MD5加密  echo -n "url" |MD5
        09 当接收到内存警告之后,内部会自动清理内存缓存
        10 图片的下载顺序,默认是先进先出的
    ```

    相关文章

      网友评论

          本文标题:SDWebImage的使用和剖析

          本文链接:https://www.haomeiwen.com/subject/wpzemttx.html