在UIView中播放循环图像序列

时间:2012-02-17 15:23:42

标签: iphone objective-c

我有一个包含120帧,512x512分辨率的循环动画,保存为32位PNG文件。我想在我的应用程序内部的UIView中播放这个序列。任何人都可以给我一些关于如何做到这一点的指示,希望我可以使用标准API(我更喜欢)这样做。我可以根据需要使用Cocos2D甚至是OpenGL(但我现在对OpenGL来说还是全新的)。

2 个答案:

答案 0 :(得分:6)

你可以试试这个:

// Init an UIImageView
UIImageView *imageView = [[UIImageView alloc] initWithFrame:/*Some frame*/];

// Init an array with UIImage objects
NSArray *array = [NSArray arrayWithObjects: [UIImage imageNamed:@"image1.png"], [UIImage imageNamed:@"image2.png"], .. ,nil];

// Set the UIImage's animationImages property
imageView.animationImages = array;

// Set the time interval
imageView.animationDuration = /* Number of images x 1/30 gets you 30FPS */;

// Set repeat count 
imageView.animationRepeatCount = 0; /* 0 means infinite */

// Start animating
[imageView startAnimating];

// Add as subview
[self.view addSubview:imageView];

这是最简单的方法,但我不能说出性能,因为我没有尝试过。我认为使用你拥有的图像应该没问题。

答案 1 :(得分:1)

未压缩,即大约90MB的图像,如果将它们解压缩为UIImage格式,这可能与您所看到的一样多。由于动画的长度和图像的大小,我强烈建议以压缩的电影格式存储它们。看一下MediaPlayer框架的参考资料;您可以删除播放控件,在您自己的视图层次结构中嵌入MPMoviePlayerController,并将播放设置为循环播放。请注意,640x480是H.264支持的上限,因此您可能需要缩小视频范围。

请注意循环视频的问题,如Smooth video looping in iOS中的问题所述。