2010-05-15 71 views
0

我使用的UIImageView运行翻书动画这样的:使用的UIImageView适用于iPhone翻书动画

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]显示它时参考它。 ?

回答

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]; 

一个完美的一个是这样的是自己所想的?

+0

工作很好。感谢所有回应的人。 – Joey 2010-05-15 22:58:46

0

[UIImage imageNamed:]会缓存图像,所以它们不会立即被释放。没有什么不对,但如果你知道你不会再使用一段时间的图像,请使用不同的方法来获取图像。

如果你有一个固定的帧速率,UIImageView还内置了动画功能。

mIntroAnimFrame.animationImages = mPreloadedArray; 
[mIntroAnimFrame startAnimating];