iOS 載入Gif圖片
阿新 • • 發佈:2019-01-30
Gif圖片是非常常見的圖片格式,尤其是在聊天的過程中,Gif表情使用地很頻繁。但是iOS竟然沒有現成的支援載入和播放Gif的類。
簡單地彙總了一下,大概有以下幾種方法:
一、載入本地Gif檔案
1、使用UIWebView
// 讀取gif圖片資料 UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,200,200)]; [self.view addSubview:webView]; NSString *path = [[NSBundle mainBundle] pathForResource:@"001" ofType:@"gif"]; /* NSData *data = [NSData dataWithContentsOfFile:path]; 使用loadData:MIMEType:textEncodingName: 則有警告 [webView loadData:data MIMEType:@"image/gif" textEncodingName:nil baseURL:nil]; */ NSURL *url = [NSURL URLWithString:path]; [webView loadRequest:[NSURLRequest requestWithURL:url]];
但是使用UIWebView的弊端在於,不能設定Gif動畫的播放時間。
2、將Gif拆分成多張圖片,使用UIImageView播放
最好把所需要的Gif圖片打包到Bundle檔案內,如下圖所示
- (NSArray *)animationImages { NSFileManager *fielM = [NSFileManager defaultManager]; NSString *path = [[NSBundle mainBundle] pathForResource:@"Loading" ofType:@"bundle"]; NSArray *arrays = [fielM contentsOfDirectoryAtPath:path error:nil]; NSMutableArray *imagesArr = [NSMutableArray array]; for (NSString *name in arrays) { UIImage *image = [UIImage imageNamed:[(@"Loading.bundle") stringByAppendingPathComponent:name]]; if (image) { [imagesArr addObject:image]; } } return imagesArr; } - (void)viewDidLoad { [super viewDidLoad]; UIImageView *gifImageView = [[UIImageView alloc] initWithFrame:frame]; gifImageView.animationImages = [self animationImages]; //獲取Gif圖片列表 gifImageView.animationDuration = 5; //執行一次完整動畫所需的時長 gifImageView.animationRepeatCount = 0; //動畫重複次數 [gifImageView startAnimating]; [self.view addSubview:gifImageView]; }
3、使用SDWebImage
匯入UIImage+GIF標頭檔案NSString *path = [[NSBundle mainBundle] pathForResource:@"gifTest" ofType:@"gif"];
NSData *data = [NSData dataWithContentsOfFile:path];
UIImage *image = [UIImage sd_animatedGIFWithData:data];
gifImageView.image = image;
君凱商聯網-iOS-字唐名僧