iPhone SDK提供了多种动画手段,UIView、UIImageView和CALayer都支持动画。但如何处理常见的gif动画呢?UIWebView提供了答案,代码如下:
1. 使用UIWebView播放
//
设定位置和大小
CGRect
frame = CGRectMake(50,50,0,0);
frame.size
= [UIImage imageNamed:@"guzhang.gif"].size;
//
读取gif图片数据
NSData
*gif = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"guzhang" ofType:@"gif"]];
//
view生成
UIWebView
*webView = [[UIWebView alloc] initWithFrame:frame];
webView.userInteractionEnabled
= NO;//用户不可交互
[webView
loadData:gif MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];
[self.view
addSubview:webView];
[webView
release];
2.将gif图片分解成多张png图片,使用UIImageView播放。
代码如下:
UIImageView
*gifImageView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
NSArray
*gifArray = [NSArray arrayWithObjects:[UIImage imageNamed:@"1"],
[UIImage
imageNamed:@"2"],
[UIImage
imageNamed:@"3"],
[UIImage
imageNamed:@"4"],
[UIImage
imageNamed:@"5"],
[UIImage
imageNamed:@"6"],
[UIImage
imageNamed:@"7"],
[UIImage
imageNamed:@"8"],
[UIImage
imageNamed:@"9"],
[UIImage
imageNamed:@"10"],
[UIImage
imageNamed:@"11"],
[UIImage
imageNamed:@"12"],
[UIImage
imageNamed:@"13"],
[UIImage
imageNamed:@"14"],
[UIImage
imageNamed:@"15"],
[UIImage
imageNamed:@"16"],
[UIImage
imageNamed:@"17"],
[UIImage
imageNamed:@"18"],
[UIImage
imageNamed:@"19"],
[UIImage
imageNamed:@"20"],
[UIImage
imageNamed:@"21"],
[UIImage
imageNamed:@"22"],nil];
gifImageView.animationImages
= gifArray; //动画图片数组
gifImageView.animationDuration
= 5; //执行一次完整动画所需的时长
gifImageView.animationRepeatCount
= 1; //动画重复次数
[gifImageView
startAnimating];
[self.view
addSubview:gifImageView];
[gifImageView
release];
注意:这个方法,如果gif动画每桢间的时间间隔不同,不能达到此效果。
1.
2.将gif图片分解成多张png图片,使用UIImageView播放。
代码如下:
注意:这个方法,如果gif动画每桢间的时间间隔不同,不能达到此效果。