Data Set
一直很推荐使用Assets.xcassets来管理图片,就一个字“方便”。用的很顺手啊。但是Gif的图片一直都是放在Resouces文件夹中的,今天突然想着为何不把Gif的图片也放入Asset.xcassets中进行管理。可怎么使用呢。
添加Gif
右键选择New Data Set后,出现一个Universal的图片框,将Gif文件拖入。
{ "info" : { "version" : 1, "author" : "xcode" }, "data" : [ { "idiom" : "universal", "filename" : "timg.gif", "universal-type-identifier" : "com.compuserve.gif" } ]}复制代码
加载Gif
因为不是png图片,所以不能使用[UIImage imageNamed:@"bear"];
来获取,执行这个返回nil。而需要通过根据路径来加载Assets.xcassets中图片。
NSString *gifPath = [[NSBundle mainBundle] pathForResource:@"bear" ofType:@"gif"]; NSData *gif = [NSData dataWithContentsOfFile:gifPath]; FLAnimatedImage *image = [FLAnimatedImage animatedImageWithGIFData:gif]; [self.gifImageView setAnimatedImage:image];复制代码
运行代码,执行成功。
FLAnimatedImage
FLAnimatedImage支持Gif的显示。如果直接使用UIImageView来显示的动画,也是可以的,不过需要加载很多图片。
@property (nullable, nonatomic, copy) NSArray<UIImage *> *animationImages;
来实现动效。 NSInteger pages = 45; NSMutableArray *imagesMArr = [[NSMutableArray alloc] initWithCapacity:5]; for (int i = 1; i <= pages; i++ ) { NSString *imageName = [NSString stringWithFormat:@"loading_%d", i]; UIImage *image = [UIImage imageNamed:imageName]; [imagesMArr addObject:image]; } [self.gifImageView setAnimationImages:imagesMArr]; [self.gifImageView startAnimating];复制代码
效果如下:
// END 开发任务一直不需要用到新的技术,感觉用之前的经验就可以混日子了。!_!