iOS中,当我们UIImageView实现动画时,如果图片是gif则不会自动播放gif图片,我们可以从gif图片中读取出每一帧的图片,然后组成图片数组,之后再实现使用UIImageView实现动画效果,可以使用下面方法获取图片数组;在使用过程,碰到了有些gif图片不能使用,可能和gif制作方式有关,无法读取每一帧数据
+ (NSArray *)getImageFromGifResource:(NSString *)resource { NSMutableArray *imageArray = [NSMutableArray array]; // 获取gif url NSURL *url = [[NSBundle mainBundle] URLForResource:resource withExtension:@"gif"]; // 转换为图片源 CGImageSourceRef gifImageSourceRef = CGImageSourceCreateWithURL((CFURLRef)url, nil); // 获取图片个数 size_t framesCount = CGImageSourceGetCount(gifImageSourceRef); for (size_t i=0; i<framesCount; i++) { CGImageRef imageRef = CGImageSourceCreateImageAtIndex(gifImageSourceRef, i, nil); UIImage *image = [UIImage imageWithCGImage:imageRef]; [imageArray addObject:image]; CFRelease(imageRef); } return imageArray; }