2014年6月30日星期一

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

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
【iOS】在页面中展示gif动图 - EverNight  阅读原文»

1 - (void)viewDidLoad
2 {
3 [super viewDidLoad];
4 // Do any additional setup after loading the view.
5
6 //1:使用第三方库
7 NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"moe" ofType:@"gif"]];
8 GifView *dataView = [[GifView alloc] initWithFrame:CGRectMake(50, 30, 100, 100) data:data];
9 [self.view addSubview:dataView];
10
11 // 或者
12 GifView *pathView =[[GifView alloc] initWithFrame:CGRectMake(170, 30, 100, 100) filePath:[[NSBundle mainBundle] pathForResource:@"moe" ofType:@"gif"]];
13 [self.view addSubview:pathView];
14
15 //2:使用webview
16 NSString *path = [[NSBundle mainBundle] pathForResource:@"moe" ofType:@"gif"];
17 NSData *gifData = [NSData dataWithContentsOfFile:path];
18 UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(110, 150, 100, 100)];
19 webView.backgroundColor = ;
20 webView.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>

@interface GifView : 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>

@implementation GifView


- (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.12 target:self selector:@selector(play) userInfo:nil repeats:YES];
[timer fire];
}
return self;
}

- (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.12 target:self selector:@selector(play) userInfo:nil repeats:YES];
[timer fire];
}
return self;
}

-(void)play
{
index
++;
index
= index%count;
CGImageRef
ref = CGImageSourceCreateImageAtIndex(gif, index, (__bridge CFDictionaryRef)gifProperties);
self.layer.contents
= (__bridge id)ref;
CFRelease(
ref);
}

-(void)removeFromSuperview
{
NSLog(
@"removeFromSuperview");
[timer invalidate];
timer
= nil;
[super removeFromSuperview];
}

- (void)dealloc
{
NSLog(
@"dealloc");
CFRelease(gif);
}

/*Silverlight 5 系列学习之一 - 浩凡儿  阅读原文»

最近公司要用Silverlight 开发并且使用了5 ,以前只学过WPF 没看过Silverlight ,不过在争光中国看了看其概念原来如此。它只不过是轻量级的WPF,且目标在于跨浏览器及平台。费话少说还是从建项目开始学习吧------------------只是记录下自己个人的学习笔记而已。

一:建立SilverLight项目如下:

没有评论:

发表评论