YYImage使用

常用方法

  • gif图片加载普通方法(可以控制gif的进度控制内部都有接口)

    gitYYImage实例

    //加载image
    YYImage *image = [YYImage imageNamed:@"niconiconi@2x.gif"];
    
    //创建ImageView
    YYAnimatedImageView *imageView = [[YYAnimatedImageView alloc] initWithImage:image];
    
    //YYAdd中的拓展UIView方法
    imageView.size = CGSizeMake(image.size.width * 0.6, image.size.height * 0.6);
    imageView.top = 80;
    imageView.centerX = self.view.width / 2;
    [self.view addSubview:imageView];
    
  • 帧动画图片组加载

        NSMutableArray *paths = [NSMutableArray new];
    
        //把一帧一帧的图片加入到数组中
        [paths addObject:[basePath stringByAppendingPathComponent:@"d_aini1.png"]];
        [paths addObject:[basePath stringByAppendingPathComponent:@"d_aini2.png"]];
        [paths addObject:[basePath stringByAppendingPathComponent:@"d_aini3.png"]];
    
        //设置动画时间和循环次数
        UIImage *image = [[YYFrameImage alloc] initWithImagePaths:paths oneFrameDuration:0.1 loopCount:0];
    
        YYAnimatedImageView *imageView = [[YYAnimatedImageView alloc] initWithImage:image];
        [self.view addSubview:imageView];
    

  • 根据进度显示图片(已知图片的部分数据显示部分图片)

    • 第一种:一部分一部分逐行扫描方式
    • 第二种:模糊到清晰显示
        NSData *subData = //获得图片部分数据
        YYImageDecoder *decoder = [[YYImageDecoder alloc] initWithScale:[UIScreen mainScreen].scale];
        [decoder updateData:subData final:NO];
        YYImageFrame *frame = [decoder frameAtIndex:0 decodeForDisplay:YES];
        _imageView.image = frame.image; //使用UIImageView和YY都是可以的
    
  • 图片缓存(之前是sdWebImage)

    • 简单方法

          UIImageView *imageView = [UIImageView new];
      
          imageView.size = CGSizeMake(300, 200);
          imageView.top = 100;
      
          NSURL *url = [[NSURL alloc] initWithString:@"https://s-media-cache-ak0.pinimg.com/1200x/2e/0c/c5/2e0cc5d86e7b7cd42af225c29f21c37f.jpg"];
          [imageView setImageWithURL:url placeholder:nil];
          [self.view addSubview:imageView];
      
    • 详细控制

      //可以控制图片是否缓存,显示方式(模糊变清晰, 或者逐行扫描)
      [_webImageView setImageWithURL:url
                             placeholder:nil
                                 options:YYWebImageOptionProgressiveBlur | YYWebImageOptionShowNetworkActivity | YYWebImageOptionSetImageWithFadeAnimation
                                progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                                    if (expectedSize > 0 && receivedSize > 0) {
                                        CGFloat progress = (CGFloat)receivedSize / expectedSize;
                                        progress = progress < 0 ? 0 : progress > 1 ? 1 : progress;
                                        if (_self.progressLayer.hidden) _self.progressLayer.hidden = NO;
      
                                        //绘制到哪里
                                        _self.progressLayer.strokeEnd = progress;
                                    }
                                } transform:nil
                              completion:^(UIImage *image, NSURL *url, YYWebImageFromType from, YYWebImageStage stage, NSError *error) {
                                  if (stage == YYWebImageStageFinished) {
      
                                      //结束后隐藏图片
                                      _self.progressLayer.hidden = YES;
                                      //动画停止并且隐藏
                                      [_self.indicator stopAnimating];
                                      _self.indicator.hidden = YES;
                                      //有图片了就隐藏label
                                      if (!image) _self.label.hidden = NO;
                                  }
                              }];
      
本文总阅读量