UIImageView animationRepeatCount 奇怪的行为

Joe*_*her 4 objective-c uiimageview ios

所以我有这段代码可以无限次地为一组图像设置动画,但是一旦我尝试限制它的动画次数,它就根本不起作用。甚至不显示图像。

有效的代码:

animatedMap.animationImages = [NSArray arrayWithObjects:
                               [UIImage imageNamed:@"0.gif"],
                               [UIImage imageNamed:@"1.gif"],
                               [UIImage imageNamed:@"2.gif"],
                               [UIImage imageNamed:@"3.gif"],
                               //etc...];
animatedMap.animationDuration = 20.0f;
animatedMap.animationRepeatCount = 0;
[animatedMap startAnimating];
Run Code Online (Sandbox Code Playgroud)

不起作用的代码:

animatedMap.animationImages = [NSArray arrayWithObjects:
                               [UIImage imageNamed:@"0.gif"],
                               [UIImage imageNamed:@"1.gif"],
                               [UIImage imageNamed:@"2.gif"],
                               [UIImage imageNamed:@"3.gif"],
                               //etc...];
animatedMap.animationDuration = 20.0f;
animatedMap.animationRepeatCount = 1;
[animatedMap startAnimating];
Run Code Online (Sandbox Code Playgroud)

这似乎是非常奇怪的行为?

kga*_*dis 5

我注意到了同样的行为,我的解决方案是将动画代码的开头放在不同的地方。

对我来说,它是一个视图控制器,所以我imageView.startAnimating()输入viewWillAppear:而不是viewDidLoad:.

我不是 100% 理解问题是什么,但可以假设动画不会触发,因为通过将 设置animationRepeatCount为 1,您的“一个动画”发生在视图显示之前。为了更多的技术,在CATransaction::Commit同一个动画被执行之前显示的视图,而不是视图时显示出来。