IPHONE GIF播放的方式
1.UIWebView 播放(无法控制周期)
.h
@inte易做图ce webViewController : UIViewController {
IBOutlet UIWebView *WebView;
IBOutlet UINavigationBar *Nav;
}
@property (nonatomic, retain) IBOutlet UIWebView *WebView;
@end
.m
- (void)viewDidLoad {
[super viewDidLoad];
[WebView setOpaque:NO];
[WebView setBackgroundColor:[UIColor clearColor]];
Nav.topItem.title=@"Welcome";
Nav.topItem.leftBarButtonItem=nil;
NSString* gifFileName = @"j_0002.gif";
NSMutableString* htmlStr = [NSMutableString string];
[htmlStr appendString:@"Hello Honey"];
[htmlStr appendString:@"<p><img src=\""];
[htmlStr appendFormat:@"%@",gifFileName];
[htmlStr appendString:@"\" alt=\"picture\"/>"];
[WebView loadHTMLString:htmlStr baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
} www.zzzyk.com
2.glgif提供的开源代码实现(目前无法控制周期,需要自己再研究)
3.使用UIView的animation接口实现(GIF需要整理出每张图片)
动画可以用UIImageView,把动画的每一帧做成图片,转换成UIImage保存在animationImages数组中,调用- (void)startAnimating;就能看到动画
4.把GIF的通过GIF的格式转换成每张图片,通过UIView的animation的接口实现(GIF的格式貌似还是有问题,有部分图片的背景有问题)
view plain
- (NSMutableArray*)getImgArrayByName:(NSString*)name
{
//happybaby20
NSURL *threeUrl =[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"crad"
ofType:@"gif"]];
NSData* data = [[NSData alloc]initWithContentsOfURL:threeUrl];
NSMutableArray* array = nil;
// long word = ::SizeofResource(handle,hrsrc);
// char* lpBy = (char*)LoadResource(handle,hrsrc);
DWORD word = data.length;
BYTE* lpBy = (BYTE*)data.bytes;
//每张图保存的指针 需要释放
BYTE* pByte[100] = {0};
//每张图的大小
DWORD nu[100] = {0};
//图片数量
int num = 0;
DWORD firstLocation = 0;
for(DWORD j=0;j<word;j++)
{
if(lpBy[j]==0x2c)
{
if(lpBy[j-1]==0x00)
{
if(num==0)
{
firstLocation = j;
}
if (num== 10)
{
int sdf=nu[num];
int sdfadf=0;
}
PGifImage nowImage = (PGifImage)&lpBy[j+1];
if(nowImage->Flag.a==0)
{
DWORD number = 1+sizeof(GifImage);
while(lpBy[j+number]!=0)
{
number = number+(DWORD)lpBy[j+number]+1;
}
number++;
pByte[num] = new BYTE[number];
memset(pByte[num],0,number);
for(DWORD n=0;n<number;n++)
{
*(BYTE*)(pByte[num]+n) = lpBy[j+n];
}
nu[num] = number;
j = j+number-1;
num++;
&nbs
补充:移动开发 , IOS ,