我们知道Gif是由一阵阵画面组成的,而且每一帧画面播放的时常可能会不相等,观察上面两个例子,发现他们都没有对Gif中每一帧的显示时常做处理,这样的结果就是整个Gif中每一帧画面都是以固定的速度向前播放,很显然这并不总会符合需求。
于是自己写一个解析Gif的工具类,解决每一帧画面并遵循每一帧所对应的显示时间进行播放。
程序的思路如下:
1、首先使用ImageIO库中的CGImageSource家在Gif文件。
2、通过CGImageSource获取到Gif文件中的总的帧数,以及每一帧的显示时间。
3、通过CAKeyframeAnimation来完成Gif动画的播放。
下面直接上我写的解析和播放Gif的工具类的代码:
复制代码
//
// SvGifView.h
// SvGifSample
//
// Created by maple on 3/28/13.
// Copyright (c) 2013 smileEvday. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface SvGifView : UIView
/*
* @brief desingated initializer
*/
- (id)initWithCenter:(CGPoint)center fileURL:(NSURL*)fileURL;
/*
* @brief start Gif Animation
*/
- (void)startGif;
/*
* @brief stop Gif Animation
*/
- (void)stopGif;
/*
* @brief get frames image(CGImageRef) in Gif
*/
+ (NSArray*)framesInGif:(NSURL*)fileURL;
@end
//
// SvGifView.m
// SvGifSample
//
// Created by maple on 3/28/13.
// Copyright (c) 2013 smileEvday. All rights reserved.
//
#import "SvGifView.h"
#import <ImageIO/ImageIO.h>
#import <QuartzCore/CoreAnimation.h>
/*
* @brief resolving gif information
*/










