我在工具栏上有UIViewController
动画UIBarButtonItem
。
按下另一个UIButton
以推送第二个UIViewController
(动画按钮不存在的位置)并弹出它,动画按预期工作。
但是如果我尝试在后台移动应用程序并恢复它,我仍然可以在那里看到动画,但如果我尝试按下并弹出它就不会了。
此外,我在第一个UIViewController
的视图中添加了相同的动画按钮,动画通过按下推/弹而不进入后台停止工作。
在UIButton
的代码中,我添加了这个以便在转换到背景和前景期间管理动画:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground) name:UIApplicationDidEnterBackgroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillEnterForeground) name:UIApplicationWillEnterForegroundNotification object:nil];
...
- (void)applicationDidEnterBackground
{
[self.spinner.layer removeAllAnimations];
}
- (void)applicationWillEnterForeground
{
[self createAnimation];
}
- (void)createAnimation
{
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
[animation setFromValue:@(0)];
[animation setToValue:@(DegreesToRadians(359))];
[animation setDuration:0.4];
[animation setRepeatCount:MAXFLOAT];
[self.spinner.layer addAnimation:animation forKey:animation.keyPath];
}
答案 0 :(得分:0)
问题解决了(我不知道这是不是最好的方式)
- (void)didMoveToWindow
{
[super didMoveToWindow];
if (self.window != nil) {
[self createAnimation];
}
}
基本上,当视图消失时(由于此情况下的推送),所有动画都会自动删除。因此,一旦再次显示视图,就需要重新创建它们。