iOS 中 GIF 图片的显示方法

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动画每桢间的时间间隔不同,不能达到此效果。

你可能感兴趣的:(UIWebView,Gif图片,UIImageView)