1

我正在为我的 iPhone 应用程序创建一个基本动画。我可以选择两种不同类型的动画。我可以用这个...

NSArray *myImages = [NSArray arrayWithObjects: 
[UIImage imageNamed:@"myImage1.png"], 
[UIImage imageNamed:@"myImage2.png"], 
[UIImage imageNamed:@"myImage3.png"], 
[UIImage imageNamed:@"myImage4.gif"], nil]; 

UIImageView *myAnimatedView = [UIImageView alloc]; 
[myAnimatedView initWithFrame:[self bounds]]; 
myAnimatedView.animationImages = myImages; 
myAnimatedView.animationDuration = 0.25;  
[self addSubview:myAnimatedView]; 
[myAnimatedView release];

或类似的东西......

    [UIView beginAnimations:nil context:NULL];
 [UIView setAnimationDuration:1.5];
 // other animations goes here
 myImage.transform = CGAffineTransformMakeRotation(M_PI*0.5);
 // other animations goes here
 [UIView commitAnimations];

我有很多这些部分要制作动画,所以我想选择一个使用最少内存且运行速度最快的选项。任何建议都会很棒,谢谢

4

3 回答 3

0

因此,您需要考虑的根本问题是您希望一次在内存中存储多少帧动画。无论您使用animationImagesArray 还是使用所有帧合而为一的单个巨大图像都没有关系。将解码后的图像数据保存在内存中会占用大量空间,对于少量的小图像,您可能可以摆脱它,但是您可以轻松编写一些代码,由于耗尽所有内存而导致设备崩溃. 请参阅我关于此特定问题的博客文章video-and-memory-usage-on-ios-devices。编写代码的更好方法是不要将所有解码的视频帧(UIImages 或 CGImageRefs)同时保存在内存中。

于 2013-06-18T15:48:59.320 回答
0

我会混合:从动画代码生成静止图像并将图层保存到 CGImages。

于 2010-05-04T19:55:18.120 回答
0

您的问题中有很多变量需要考虑。其中大部分将取决于图像的大小和复杂性以及动画运行的频率。我的预感是使用 API 提供的转换将是最便宜的,但唯一真正的判断方法是对两个动画进行压力测试,看看哪个最适合你的情况。

于 2010-05-04T14:26:14.973 回答