在iPhone上使用UIImageView进行翻页动画

时间:2010-05-15 21:02:05

标签: iphone animation uiimageview uiimage

我正在使用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]来显示它时引用它。 ?

2 个答案:

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