UIImage animatedImageNamed重复计数

时间:2015-03-06 13:11:24

标签: ios objective-c

我有一个动画的图像序列:

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 120)];
[UIImage animatedImageNamed:@"spinner-" duration:1.0f];
imgView.contentMode = UIViewContentModeCenter;
imgView.animationRepeatCount = 1; // No effect
[self.view addSubView:imgView];

但序列保持循环。有没有办法控制重复次数(并继续显示最后一张图像)?

2 个答案:

答案 0 :(得分:19)

在您的情况下,使用[UIImage animatedImageNamed:@"spinner-" duration:1.0f];无法提供您想要的内容。

对于您希望实现的目标,我建议您使用UIImageView

用法:

首先创建一个UIImageView对象:

UIImageView *imageView = [[UIImageView alloc] initWithFrame:<FRAME_SIZE>];

其次,创建一个数组,用于保存要动画的图像。

如果您只有几个,请执行以下操作:

NSMutableArray *animatedImagesArray = [[NSMutableArray alloc] initWithObjects:[UIImage imageNamed:@"spinner-1.png"], [UIImage imageNamed:@"spinner-2.png"], nil];

如果您有更多,那么您可以将图像加载到数组中,如下所示:

for (int i = 0; i < <NUM_OF_IMAGE_COUNT>; i++)
{
    [animatedImagesArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"spinner-%d%@", i, @".png"]]];
}

完成所有操作后,我们就会配置您想要的控件:

imageView.animationImages = animatedImagesArray;

imageView.animationDuration = 1.0f;

imageView.animationRepeatCount = 1.0f;

然后通过以下方式开始制作动画:

[imageView startAnimating];

通过以下方式停止动画:

[imageView stopAnimating];

如果您希望UIImageView在停止后保留最后一张图片,我们需要在开始动画之前执行以下

imageView.image = [imageView.animationImages lastObject];
....

[imageView startAnimating];

希望这有帮助。

答案 1 :(得分:1)

您可以在显示图像的UIImageView对象中设置重复计数。

UIImage *testImage = [UIImage animatedImageNamed:@"Box.jpg" duration:1.0f];
UIImageView *imgView = [[UIImageView alloc] initWithImage:testImage];
[imgView setAnimationRepeatCount:1];