在UIImageView中加载animation的图像 – iOS

我有大约300个图像加载animation图像被命名为loading001.png, loading002.png, loading003.png, loading004.png………loading300.png

我正在这样做。

.h文件

  #import <UIKit/UIKit.h> @interface CenterViewController : UIViewController { UIImageView *imgView; } @end 

.m文件

 @implementation CenterViewController - (void)viewDidLoad { [super viewDidLoad]; imgView = [[UIImageView alloc] init]; imgView.animationImages = [[NSArray alloc] initWithObjects: [UIImage imageNamed:@"loading001.png"], [UIImage imageNamed:@"loading002.png"], [UIImage imageNamed:@"loading003.png"], [UIImage imageNamed:@"loading004.png"], nil]; } - (IBAction)startAnimation:(id)sender{ [imgView startAnimating]; } @end 

有没有一种有效的方法来将图像加载到数组中。 我曾尝试过for loop但无法弄清楚。

您可以尝试下面的代码,以更好的方式将图像加载到数组中

 - (void)viewDidLoad { [super viewDidLoad]; NSMutableArray *imgListArray = [NSMutableArray array]; for (int i=1; i <= 300; i++) { NSString *strImgeName = [NSString stringWithFormat:@"loading%03d.png", i]; UIImage *image = [UIImage imageNamed:strImgeName]; if (!image) { NSLog(@"Could not load image named: %@", strImgeName); } else { [imgListArray addObject:image]; } } imgView = [[UIImageView alloc] init]; [imgView setAnimationImages:imgListArray]; } 

有一个更简单的方法来做到这一点。 你可以简单地使用:

 [UIImage animatedImageNamed:@"loading" duration:1.0f] 

其中1.0f是animation所有图像的持续时间。 为了这个工作,你的图像必须像这样命名:

 loading1.png loading2.png . . loading99.png . . loading300.png 

也就是说,没有填充0。

animateImageNamed函数可以从iOS 5.0开始使用。

根据图像的大小,一个300的图像animation序列可能是相当的记忆猪。 使用电影可能是一个更好的解决scheme。

你的代码在设备上运行时会崩溃,只是不可能在iOS上将很多图片解压缩到内存中。 你会得到内存警告,然后你的应用程序将被操作系统杀死。 看到我的答案如何做,animation,使用图像,高效率在IOS中的解决scheme,不会在设备上崩溃。