我正在为我的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];
我有很多这些部分要动画,所以我想选择一个使用最少内存并且最快的选项。任何建议都会很棒,谢谢
答案 0 :(得分:0)
您的问题中有很多变量需要考虑。其中很大程度上取决于图像的大小和复杂程度以及动画运行的频率。我的预感是使用API提供的变换将是最便宜的,但唯一真正的方法是对两种动画进行压力测试,看看哪种情况在你的情况下保持最佳状态。
答案 1 :(得分:0)
我会混合:从动画代码生成静止图像并将图层保存到CGImages。
答案 2 :(得分:0)
因此,您需要考虑的根本问题是您希望一次在内存中有多少帧动画。如果您使用animationImagesArray或一个巨大的图像与所有帧在一个中,则无关紧要。将解码后的图像数据保存在内存中会占用大量空间,您可以使用它来获取少量小图像,但是您可以轻松编写一些代码,这些代码会因为耗尽所有内存而导致设备崩溃。请参阅我关于此特定问题的博客文章video-and-memory-usage-on-ios-devices。编写代码的更好方法是不要同时在内存中保存所有已解码的视频帧(UIImages或CGImageRefs)。