亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS Gif圖片展示N種方式(原生+第三方)

2020-07-26 03:26:41
字體:
來源:轉載
供稿:網友

本文分享了iOS Gif圖片展示N種方式,供大家參考,具體內容如下

原生方法:

1.UIWebView
特點:加載速度略長,性能更優,播放的gif動態圖更加流暢。

//動態展示GIF圖片-WebView-(void)showGifImageWithWebView{ //讀取gif圖片數據 NSData *gifData = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"earthGif" ofType:@"gif"]]; //UIWebView生成 UIWebView *imageWebView = [[UIWebView alloc] initWithFrame:CGRectMake(112, 302, 132, 102)]; //用戶不可交互 imageWebView.userInteractionEnabled = NO; //加載gif數據 [imageWebView loadData:gifData MIMEType:@"image/gif" textEncodingName:nil baseURL:nil]; //視圖添加此gif控件 [self.view addSubview:imageWebView];}

2.UIImagView
加載的方式更加快速,性能不如UIWebView,優點:易于擴展

1)
增加一個UIImageView的類別(category),增加兩個方法
UIImage+Tool
.h

#import <UIKit/UIKit.h>@interface UIImageView (Tool)/** 解析gif文件數據的方法 block中會將解析的數據傳遞出來 */-(void)getGifImageWithUrk:(NSURL *)url returnData:(void(^)(NSArray<UIImage *> * imageArray,NSArray<NSNumber *>*timeArray,CGFloat totalTime, NSArray<NSNumber *>* widths, NSArray<NSNumber *>* heights))dataBlock;/** 為UIImageView添加一個設置gif圖內容的方法: */-(void)yh_setImage:(NSURL *)imageUrl;@end

.m

//// UIImageView+Tool.m// OneHelper//// Created by qiuxuewei on 16/3/2.// Copyright © 2016年 邱學偉. All rights reserved.//#import "UIImageView+Tool.h"http://要引入ImageIO庫#import <ImageIO/ImageIO.h>@implementation UIImageView (Tool)//解析gif文件數據的方法 block中會將解析的數據傳遞出來-(void)getGifImageWithUrk:(NSURL *)url returnData:(void(^)(NSArray<UIImage *> * imageArray, NSArray<NSNumber *>*timeArray,CGFloat totalTime, NSArray<NSNumber *>* widths,NSArray<NSNumber *>* heights))dataBlock{ //通過文件的url來將gif文件讀取為圖片數據引用 CGImageSourceRef source = CGImageSourceCreateWithURL((CFURLRef)url, NULL); //獲取gif文件中圖片的個數 size_t count = CGImageSourceGetCount(source); //定義一個變量記錄gif播放一輪的時間 float allTime=0; //存放所有圖片 NSMutableArray * imageArray = [[NSMutableArray alloc]init]; //存放每一幀播放的時間 NSMutableArray * timeArray = [[NSMutableArray alloc]init]; //存放每張圖片的寬度 (一般在一個gif文件中,所有圖片尺寸都會一樣) NSMutableArray * widthArray = [[NSMutableArray alloc]init]; //存放每張圖片的高度 NSMutableArray * heightArray = [[NSMutableArray alloc]init]; //遍歷 for (size_t i=0; i<count; i++) {  CGImageRef image = CGImageSourceCreateImageAtIndex(source, i, NULL);  [imageArray addObject:(__bridge UIImage *)(image)];  CGImageRelease(image);  //獲取圖片信息  NSDictionary * info = (__bridge NSDictionary*)CGImageSourceCopyPropertiesAtIndex(source, i, NULL);  CGFloat width = [[info objectForKey:(__bridge NSString *)kCGImagePropertyPixelWidth] floatValue];  CGFloat height = [[info objectForKey:(__bridge NSString *)kCGImagePropertyPixelHeight] floatValue];  [widthArray addObject:[NSNumber numberWithFloat:width]];  [heightArray addObject:[NSNumber numberWithFloat:height]];  NSDictionary * timeDic = [info objectForKey:(__bridge NSString *)kCGImagePropertyGIFDictionary];  CGFloat time = [[timeDic objectForKey:(__bridge NSString *)kCGImagePropertyGIFDelayTime]floatValue];  allTime+=time;  [timeArray addObject:[NSNumber numberWithFloat:time]]; } dataBlock(imageArray,timeArray,allTime,widthArray,heightArray);}//為UIImageView添加一個設置gif圖內容的方法:-(void)yh_setImage:(NSURL *)imageUrl{ __weak id __self = self; [self getGifImageWithUrk:imageUrl returnData:^(NSArray<UIImage *> *imageArray, NSArray<NSNumber *> *timeArray, CGFloat totalTime, NSArray<NSNumber *> *widths, NSArray<NSNumber *> *heights) {  //添加幀動畫  CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];  NSMutableArray * times = [[NSMutableArray alloc]init];  float currentTime = 0;  //設置每一幀的時間占比  for (int i=0; i<imageArray.count; i++) {   [times addObject:[NSNumber numberWithFloat:currentTime/totalTime]];   currentTime+=[timeArray[i] floatValue];  }  [animation setKeyTimes:times];  [animation setValues:imageArray];  [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];  //設置循環  animation.repeatCount= MAXFLOAT;  //設置播放總時長  animation.duration = totalTime;  //Layer層添加  [[(UIImageView *)__self layer]addAnimation:animation forKey:@"gifAnimation"]; }];}@end

在加載gif的地方使用
導入 UIImageView+Tool

-(void)showGifImageWithImageView{ UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(112, 342, 132, 102)]; NSURL * url = [[NSURL alloc]initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@"earthGif.gif" ofType:nil]]; [imageView yh_setImage:url]; [self.view addSubview:imageView];}

第三方:
1.YLGIFImage
github鏈接: https://github.com/liyong03/YLGIFImage

#import "YLGIFImage.h"#import "YLImageView.h"-(void)showGifImageWithYLImageView{ YLImageView* imageView = [[YLImageView alloc] initWithFrame:CGRectMake(112, 342, 132, 102)]; CGFloat centerX = self.view.center.x; [imageView setCenter:CGPointMake(centerX, 402)]; [self.view addSubview:imageView]; imageView.image = [YLGIFImage imageNamed:@"earthGif.gif"];}

2.FLAnimatedImage
github鏈接:https://github.com/Flipboard/FLAnimatedImage

-(void)showGifImageWithFLAnimatedImage{ //GIF 轉 NSData //Gif 路徑 NSString *pathForFile = [[NSBundle mainBundle] pathForResource: @"earthGif" ofType:@"gif"]; //轉成NSData NSData *dataOfGif = [NSData dataWithContentsOfFile: pathForFile]; //初始化FLAnimatedImage對象 FLAnimatedImage *image = [FLAnimatedImage animatedImageWithGIFData:dataOfGif]; //初始化FLAnimatedImageView對象 FLAnimatedImageView *imageView = [[FLAnimatedImageView alloc] init]; //設置GIF圖片 imageView.animatedImage = image; imageView.frame = CGRectMake(112, 342, 132, 102); [self.view addSubview:imageView];}

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色琪琪综合男人的天堂aⅴ视频| 欧美影院在线播放| 亚洲美女av网站| 欧美亚洲国产另类| 日韩中文字幕在线视频| 91av视频在线观看| 日本伊人精品一区二区三区介绍| 九色成人免费视频| 国产精品视频精品视频| 亚洲男人天堂视频| 久久精品国产清自在天天线| 亚洲自拍小视频免费观看| 成人中文字幕+乱码+中文字幕| 欧美极品欧美精品欧美视频| 国产精品久久久久久影视| 视频直播国产精品| 亚洲97在线观看| 性欧美亚洲xxxx乳在线观看| 日韩免费高清在线观看| 91精品国产自产在线观看永久| 亚洲精品免费av| 琪琪亚洲精品午夜在线| 亚洲黄页网在线观看| 亚洲欧洲日本专区| 亚洲国语精品自产拍在线观看| 欧美福利视频网站| 不卡av日日日| 日韩最新中文字幕电影免费看| 日韩一级裸体免费视频| 国产精品久久久久久搜索| 国产精品视频久久| 久久精品久久久久电影| 久久亚洲欧美日韩精品专区| 亚洲va久久久噜噜噜久久天堂| 色综合五月天导航| 日韩av在线最新| 欧美午夜www高清视频| 国模吧一区二区| 81精品国产乱码久久久久久| 91精品国产免费久久久久久| 国产成人一区二区| 136fldh精品导航福利| 色婷婷**av毛片一区| 久久久久这里只有精品| 91高清视频免费| 91美女片黄在线观| 亚洲欧洲自拍偷拍| 国产精品福利久久久| 亚洲永久免费观看| 亚洲欧美国产精品va在线观看| 亚洲曰本av电影| 成人性生交大片免费观看嘿嘿视频| 亚洲欧美日韩精品久久奇米色影视| 亚洲精品理论电影| 97国产suv精品一区二区62| 成人亚洲欧美一区二区三区| 在线成人激情视频| 日韩免费观看在线观看| 欧美理论电影在线观看| 主播福利视频一区| 久久99精品久久久久久琪琪| 欧美成人高清视频| 欧美午夜宅男影院在线观看| 亚洲精品98久久久久久中文字幕| 美日韩丰满少妇在线观看| 黑人欧美xxxx| 国产日韩精品综合网站| 久久精品美女视频网站| 国内精品模特av私拍在线观看| 久久久亚洲网站| 欧美成人亚洲成人日韩成人| 精品丝袜一区二区三区| 日韩av快播网址| 欧美另类极品videosbestfree| 久久久久久久久久久免费精品| 国产亚洲欧美另类中文| 成人久久一区二区| 亚洲精品wwww| 精品久久久久久中文字幕大豆网| 最近2019中文免费高清视频观看www99| 欧美自拍视频在线观看| 亚洲精品国产品国语在线| 色综合久久久久久中文网| 尤物九九久久国产精品的特点| 日韩黄色在线免费观看| 欧美日韩在线视频一区二区| 日韩精品高清视频| 自拍视频国产精品| 亚洲精品日产aⅴ| 色偷偷888欧美精品久久久| 国产精品高潮呻吟视频| 久久国产精品99国产精| 欧美激情欧美狂野欧美精品| 姬川优奈aav一区二区| 亚洲国语精品自产拍在线观看| 久久久av一区| 国内精品一区二区三区四区| 一区二区三区四区精品| 色婷婷综合成人| 久久精品视频免费播放| 日韩网站免费观看| 国产日产亚洲精品| 日韩中文字幕在线观看| 国产一区二区三区在线播放免费观看| 日韩精品在线私人| 欧美电影免费观看大全| 精品激情国产视频| 欧美在线xxx| 欧美风情在线观看| 久久综合久久88| 最近2019年中文视频免费在线观看| xvideos亚洲| 欧洲亚洲免费视频| 欧美在线视频观看| 亚洲男人天堂九九视频| 亚洲аv电影天堂网| 在线电影av不卡网址| 91免费人成网站在线观看18| 最新国产精品亚洲| 一本久久综合亚洲鲁鲁| 日韩av黄色在线观看| 国产一区二区三区直播精品电影| 国产一区二区日韩| 亚洲香蕉成人av网站在线观看| 亚洲国产一区二区三区在线观看| 日韩精品亚洲元码| 日韩精品免费看| 国产精品丝袜一区二区三区| 亚洲福利在线视频| 中文字幕亚洲一区| 成人激情在线观看| 国产精品久久久久77777| 91高清免费视频| 欧美视频二区36p| 欧美大片欧美激情性色a∨久久| 中文字幕免费国产精品| 亚洲精品在线观看www| 久久国产精品偷| 欧美精品xxx| 成人欧美一区二区三区黑人| 国产亚洲免费的视频看| 91产国在线观看动作片喷水| 欧洲成人免费aa| 亚洲娇小xxxx欧美娇小| 国产在线一区二区三区| 555www成人网| 国产精品久久久久久久久久久久久久| 色综合久久天天综线观看| 亚洲全黄一级网站| 亚洲一区二区三区sesese| 欧日韩不卡在线视频| 福利一区福利二区微拍刺激| 九九久久综合网站| 97香蕉超级碰碰久久免费软件| 欧美裸体xxxx极品少妇| 久久久最新网址| 亚洲欧美在线播放| 精品视频久久久| 日韩欧美国产网站| 精品香蕉在线观看视频一| 午夜精品久久久99热福利| 欧美另类在线播放| 欧美成人免费观看| 国产精自产拍久久久久久蜜|