有时候我们需要显示一些GIF图片,例如loading的动画,而UI只提供了一张GIF图片的时候,我们可以使用webview进行显示,或者使用imageview。但是当使用imageview显示的时候,我们需要一个image的数组,那么我们可以这么处理;
+ (NSArray *)getImagesFromGIF:(NSString *)gifName {
NSURL *gifImageUrl = [[NSBundle mainBundle]URLForResource:gifName withExtension:@"gif"];
//获取Gif图的原数据
CGImageSourceRef gifSource = CGImageSourceCreateWithURL((CFURLRef)gifImageUrl, NULL);
//获取Gif图有多少帧
size_t count = CGImageSourceGetCount(gifSource);
NSMutableArray *images = [[NSMutableArray alloc] init];
for (NSInteger i = 0; i < count; i++) {
//生成一张CGImageRef类型的图片
CGImageRef imageRef = CGImageSourceCreateImageAtIndex(gifSource, i, NULL);
UIImage *image = [UIImage imageWithCGImage:imageRef];
[images addObject:image];
CGImageRelease(imageRef);
}
//得到图片数组
return images;
}
获取到这个数组后,我们就可以使用这个GIF图片进行展示了。