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
}]
网友评论