我正在使用UIImageView运行这样的flipbook动画:
mIntroAnimFrame = [[UIImageView alloc] initWithFrame:CGRectMake( 0, 0, 480, 320);
mIntroAnimFrame.image = [UIImage imageNamed:@"frame0000.tif"];
基本上,当确定时间时,我只需要调用:
来翻转图像mIntroAnimFrame.image = [UIImage imageNamed:@"frame0000.tif"];
再次使用正确的框架。我应该这样做吗?是否重复调用以这种方式设置图像可能会使主内存陷入困境,或者每个调用基本上是否释放了之前的UIImage,因为没有其他任何引用它?我怀疑后者是真的。
另外,有一种简单的方法来预加载图像吗?动画似乎有时会放慢速度。我应该简单地将所有图像加载到一个虚拟的UIImage数组中,以便它们被预加载,然后当我想用mIntroAnimFrame.image = mPreloadedArray [i]来显示它时引用它。 ?
答案 0 :(得分:2)
我正在打一个例子,但记得在http://www.iphoneexamples.com/
有一个完美的例子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; // seconds
myAnimatedView.animationRepeatCount = 0; // 0 = loops forever
[myAnimatedView startAnimating];
[self addSubview:myAnimatedView];
[myAnimatedView release];
这是你在想什么?
答案 1 :(得分:0)
[UIImage imageNamed:]将缓存图像,因此不会立即释放它们。这没有什么不对,但如果你知道你暂时不会再使用图像,请使用不同的方法来获取图像。
如果您有常规的帧速率,UIImageView还具有内置的动画功能。
mIntroAnimFrame.animationImages = mPreloadedArray;
[mIntroAnimFrame startAnimating];