YYImage/YYWebImage

YYImage

YYKit的图像框架

  • 显示普通动画类型图片YYImage
YYImage *image1 = [YYImage imageNamed:@"icon.gif"];
UIImageView *imageView1 = [[YYAnimatedImageView alloc]initWithImage:image1];
YYImage *image2 = [YYImage imageNamed:@"pia.png"];
UIImageView *imageView2 = [[YYAnimatedImageView alloc]initWithImage:image2];
  • 显示帧动画YYFrameImage
 //图片路径
 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];
    */
 
  • 显示精灵图片YYSpriteSheetImage


    精灵图片?
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
    }]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,721评论 2 7
  • 技术无极限,从菜鸟开始,从源码开始。 由于公司目前项目还是用OC写的项目,没有升级swift 所以暂时SDWebI...
    充满活力的早晨阅读 12,694评论 0 2
  • 1、设置UILabel行间距 NSMutableAttributedString* attrString = [[...
    FF_911阅读 1,424评论 0 3
  • 1、改变 UITextField 占位文字 颜色和去掉底部白框 [_userName setValue:[UICo...
    i_MT阅读 1,064评论 0 2
  • 请把我温柔杀害 靠近一点就好 轻轻的就好 不能抑制的爱 总会疼痛 再遥远的距离 也无济于事 走到你的身旁 闭上双眼...
    方成学长阅读 188评论 0 1