我有一个动画的图像序列:
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];
但序列保持循环。有没有办法控制重复次数(并继续显示最后一张图像)?
答案 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];