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
    }]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358

推荐阅读更多精彩内容

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