UIView动画无法正常工作

时间:2015-04-21 15:32:57

标签: ios objective-c animation

我在工具栏上有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];
}

1 个答案:

答案 0 :(得分:0)

问题解决了(我不知道这是不是最好的方式)

- (void)didMoveToWindow
{
    [super didMoveToWindow];
    if (self.window != nil) {
         [self createAnimation];
    }
}

基本上,当视图消失时(由于此情况下的推送),所有动画都会自动删除。因此,一旦再次显示视图,就需要重新创建它们。