YYImage/YYWebImage

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:@"[email protected]"]];
[paths addObject:[basePath stringByAppendingPathComponent:@"[email protected]"]];
[paths addObject:[basePath stringByAppendingPathComponent:@"[email protected]"]];
 [paths addObject:[basePath stringByAppendingPathComponent:@"[email protected]"]];
[paths addObject:[basePath stringByAppendingPathComponent:@"[email protected]"]];
 [paths addObject:[basePath stringByAppendingPathComponent:@"[email protected]"]];
 [paths addObject:[basePath stringByAppendingPathComponent:@"[email protected]"]];
 [paths addObject:[basePath stringByAppendingPathComponent:@"[email protected]"]];

 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];
    */
 
  • 显示精灵图片


    YYImage/YYWebImage_第1张图片
    精灵图片?
NSString *path = [[NSBundle mainBundle].bundlePath stringByAppendingPathComponent:@"ResourceTwitter.bundle/[email protected]"];
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)