【iOS】在页面中展示gif动图

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1- (void)viewDidLoad2{3[super viewDidLoad];4//Do any additional setup after loading the view.56//1:使用第三方库7NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"moe"ofType:@"gif"]];8GifView *dataView = [[GifView alloc] initWithFrame:CGRectMake(50,30,100,100) data:data];9[self.view addSubview:dataView];1011//或者12GifView *pathView =[[GifView alloc] initWithFrame:CGRectMake(170,30,100,100) filePath:[[NSBundle mainBundle] pathForResource:@"moe"ofType:@"gif"]];13[self.view addSubview:pathView];1415//2:使用webview16NSString *path = [[NSBundle mainBundle] pathForResource:@"moe"ofType:@"gif"];17NSData *gifData =[NSData dataWithContentsOfFile:path];18UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(110,150,100,100)];19webView.backgroundColor =[UIColor clearColor];20webView.scalesPageToFit =YES;21[webView loadData:gifData MIMEType:@"image/gif"textEncodingName:nil baseURL:nil];22[self.view addSubview:webView];23}

第三方库代码

////GifView.h//GifDemo//#import<UIKit/UIKit.h>#import<ImageIO/ImageIO.h>@interfaceGifView : UIView

{

CGImageSourceRef gif;

NSDictionary*gifPRoperties;

size_t index;

size_t count;

NSTimer*timer;

}- (id)initWithFrame:(CGRect)frame filePath:(NSString *)_filePath;- (id)initWithFrame:(CGRect)frame data:(NSData *)_data;@end

////GifView.m//GifDemo//#import"GifView.h"#import<QuartzCore/QuartzCore.h>@implementationGifView- (id)initWithFrame:(CGRect)frame filePath:(NSString *)_filePath

{

self=[super initWithFrame:frame];if(self) {

gifProperties= [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount]forKey:(NSString *)kCGImagePropertyGIFDictionary];

gif=CGImageSourceCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:_filePath], (__bridge CFDictionaryRef)gifProperties);

count=CGImageSourceGetCount(gif);

timer= [NSTimer scheduledTimerWithTimeInterval:0.12target:self selector:@selector(play) userInfo:nil repeats:YES];

[timer fire];

}returnself;

}- (id)initWithFrame:(CGRect)frame data:(NSData *)_data

{

self=[super initWithFrame:frame];if(self) {

gifProperties= [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount]forKey:(NSString *)kCGImagePropertyGIFDictionary];

gif=CGImageSourceCreateWithData((__bridge CFDataRef)_data, (__bridge CFDictionaryRef)gifProperties);

count=CGImageSourceGetCount(gif);

timer= [NSTimer scheduledTimerWithTimeInterval:0.12target:self selector:@selector(play) userInfo:nil repeats:YES];

[timer fire];

}returnself;

}-(void)play

{

index++;

index= index%count;

CGImageRefref=CGImageSourceCreateImageAtIndex(gif, index, (__bridge CFDictionaryRef)gifProperties);

self.layer.contents= (__bridgeid)ref;

CFRelease(ref);

}-(void)removeFromSuperview

{

NSLog(@"removeFromSuperview");

[timer invalidate];

timer=nil;

[super removeFromSuperview];

}- (void)dealloc

{

NSLog(@"dealloc");

CFRelease(gif);

}/*// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect

{

// Drawing code

}*/@end

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航