美文网首页iOS笔记
YYImage/YYWebImage

YYImage/YYWebImage

作者: wpf_register | 来源:发表于2016-12-16 17:06 被阅读392次

    YYImage

    YYKit的图像框架

    • 显示普通动画类型图片
    YYImage *image1 = [YYImage imageNamed:@"icon.gif"];
    UIImageView *imageView1 = [[YYAnimatedImageView alloc]initWithImage:image1];
    YYImage *image2 = [YYImage imageNamed:@"pia.png"];
    UIImageView *imageView2 = [[YYAnimatedImageView alloc]initWithImage:image2];
    
    • 显示帧动画
     //图片路径
     NSMutableArray *paths = [NSMutableArray new];
    NSString *basePath = [[NSBundle mainBundle].bundlePath stringByAppendingPathComponent:@"EmoticonWeibo.bundle/com.sina.default"];
     [paths addObject:[basePath stringByAppendingPathComponent:@"d_aini@3x.png"]];
    [paths addObject:[basePath stringByAppendingPathComponent:@"d_baibai@3x.png"]];
    [paths addObject:[basePath stringByAppendingPathComponent:@"d_chanzui@3x.png"]];
     [paths addObject:[basePath stringByAppendingPathComponent:@"d_chijing@3x.png"]];
    [paths addObject:[basePath stringByAppendingPathComponent:@"d_dahaqi@3x.png"]];
     [paths addObject:[basePath stringByAppendingPathComponent:@"d_guzhang@3x.png"]];
     [paths addObject:[basePath stringByAppendingPathComponent:@"d_haha@2x.png"]];
     [paths addObject:[basePath stringByAppendingPathComponent:@"d_haixiu@3x.png"]];
    
     UIImage *image = [[YYFrameImage alloc]initWithImagePaths:paths oneFrameDuration:0.1 loopCount:0];
    
        //图片data格式
        /*
        NSData *data1 = UIImageJPEGRepresentation([UIImage imageNamed:@"1.jpg"], 0.8);
        NSData *data2 = UIImageJPEGRepresentation([UIImage imageNamed:@"2.jpg"], 0.8);
        NSData *data3 = UIImageJPEGRepresentation([UIImage imageNamed:@"3.jpg"], 0.8);
        NSArray *imageArray = @[data1,data2,data3];
        UIImage *image = [[YYFrameImage alloc]initWithImageDataArray:imageArray oneFrameDuration:2 loopCount:0];
        */
     
    
    • 显示精灵图片


      精灵图片?
    NSString *path = [[NSBundle mainBundle].bundlePath stringByAppendingPathComponent:@"ResourceTwitter.bundle/fav02l-sheet@2x.png"];
    UIImage *sheet = [[UIImage alloc] initWithData:[NSData dataWithContentsOfFile:path] scale:1];
    NSMutableArray *contentRects = [NSMutableArray new];
    NSMutableArray *durations = [NSMutableArray new];
    //8列 * 12行
        for (int j = 0; j < 12; j++) {
            for (int i = 0; i < 8; i++) {
                CGRect rect;
                rect.size = CGSizeMake(sheet.size.width / 8, sheet.size.height / 12);
                rect.origin.x = sheet.size.width / 8 * i;
                rect.origin.y = sheet.size.height / 12 * j;
                [contentRects addObject:[NSValue valueWithCGRect:rect]];
                [durations addObject:@(1 / 60.0)];
            }
        }
    YYSpriteSheetImage *sprite = [[YYSpriteSheetImage alloc]initWithSpriteSheetImage:sheet
                                                                          contentRects:contentRects
                                                                        frameDurations:durations
                                                                             loopCount:0];
    YYAnimatedImageView *imageView4 = [[YYAnimatedImageView alloc]initWithImage:sprite];
    imageView4.size = CGSizeMake(sheet.size.width/8, sheet.size.height/12);
    imageView4.centerX = self.view.centerX;
    imageView4.top = imageView3.bottom + 20;
    //动画可控制播放或暂停
    //得到播放状态 imageView4.currentIsPlayingAnimation
    //设置播放进度
    //imageView4.currentAnimatedImageIndex = 100;//设置值无效时不起作用
     [imageView4 stopAnimating];
    [imageView4 startAnimating];
    
    • 判断图片格式
    YYImageType type = YYImageDetectType((__bridge CFDataRef _Nonnull)(UIImageJPEGRepresentation(image1, 0.8)));
    

    YYWebImage

    YYKit的异步加载框架,底层用 YYCache 实现了内存和磁盘缓存, 用 YYImage 实现了 WebP/APNG/GIF 动图的解码和播放

    • 图片加载
    //1.加载本地图片
    imageView5.yy_imageURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"1" ofType:@"jpg"]];
    //2.加载网络图片
    //imageView5.yy_imageURL = [NSURL URLWithString:@"http://www.fanghoo.cn/upload/147494351380663.jpg"];
    //3.加载动图
    //动图加载只要将imageView 换成 YYAnimatedImageView即可
    //4.渐进式加载
    //YYWebImageOptionShowNetworkActivity  状态栏小菊花
    //YYWebImageOptionProgressive      逐行式加载
    //YYWebImageOptionSetImageWithFadeAnimation   渐显效果
    [imageView5 yy_setImageWithURL: [NSURL URLWithString:@"http://www.fanghoo.cn/upload/147494351380663.jpg"] options:YYWebImageOptionSetImageWithFadeAnimation];
    //5.加载处理图片
     [imageView5 yy_setImageWithURL:[NSURL URLWithString:@"http://www.fanghoo.cn/upload/147494351380663.jpg"]
                        placeholder:nil
                            options:YYWebImageOptionSetImageWithFadeAnimation
                            progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                                  NSLog(@"%.2f",(float)receivedSize/expectedSize);
                          } transform:^UIImage * _Nullable(UIImage * _Nonnull image, NSURL * _Nonnull url) {
                                  
                                  image = [image yy_imageByResizeToSize:CGSizeMake(100, 100) contentMode:UIViewContentModeCenter];
                                  return [image yy_imageByRoundCornerRadius:10];
                                  
                          } completion:^(UIImage * _Nullable image, NSURL * _Nonnull url, YYWebImageFromType from, YYWebImageStage stage, NSError * _Nullable error) {
                                  
                                  if (from == YYWebImageFromDiskCache) {
                                      NSLog(@"load from disk cache");
                                  }else{
                                      NSLog(@"%ld",(unsigned long)from);
                                  }
                              }];
    
    • 图片缓存
    YYImageCache *cache = [YYWebImageManager sharedManager].cache;
     // 获取缓存大小
    //cache.memoryCache.totalCost;
    //cache.memoryCache.totalCount;
    //cache.diskCache.totalCost;
    //cache.diskCache.totalCount;
    // 清空缓存
    [cache.memoryCache removeAllObjects];
    [cache.diskCache removeAllObjects];
    // 清空磁盘缓存,带进度回调
    [cache.diskCache removeAllObjectsWithProgressBlock:^(int removedCount, int totalCount) {
            // progress
        } endBlock:^(BOOL error) {
            // end
        }]
    

    相关文章

      网友评论

      本文标题:YYImage/YYWebImage

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