改自swift版本: http://www.reibang.com/p/0f39114a7f8e
首先導(dǎo)入<ImageIO/ImageIO.h>
創(chuàng)建imageview,然后:
// 1.獲取CFDataRef類型
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"demo.gif" ofType:nil];
id fileData = [NSData dataWithContentsOfFile:filePath];
// 2.根據(jù)Data獲取CGImageSource對象
CGImageSourceRef imageSource = CGImageSourceCreateWithData((CFDataRef)fileData, nil);
// 3.獲取gif圖片中圖片的個(gè)數(shù)
NSIntegerframeCount = CGImageSourceGetCount(imageSource);
// 記錄播放時(shí)間
float duration =0;
NSMutableArray *images = [NSMutableArray array];
for(inti =0; i < frameCount; i ++) {
// 3.1.獲取圖片
CGImageRef cgImage = CGImageSourceCreateImageAtIndex(imageSource, i, nil);
// 3.2.獲取時(shí)長
CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(imageSource, i, nil);
NSLog(@"%@",properties);
NSDictionary *gifInfo = (__bridgeNSDictionary*)properties;
duration = [gifInfo[@"{GIF}"][@"DelayTime"] doubleValue] + duration;
UIImage *image = [UIImage imageWithCGImage:cgImage];
[images addObject:image];
// 設(shè)置停止播放時(shí)顯示的圖片
if(i == frameCount -1) {
self.imageView.image = image;
}
}
// 4.播放圖片
self.imageView.animationImages = images;
// 播放總時(shí)間
self.imageView.animationDuration = duration;
// 播放次數(shù), 0為無限循環(huán)
self.imageView.animationRepeatCount = 1;
// 開始播放
[self.imageView startAnimating];