如何在applicationDidEnterBackground中停止UIDy​​namicAnimator

时间:2014-08-26 04:28:57

标签: ios objective-c xcode ios7 ios6

如果在调用UIDynamicAnimator时如何停止applicationDidEnterBackground?另外,如何在applicationWillEnterForeground中启动计时器?这是我的代码:

在我的游戏viewcontroller.m

 -(void)stoptime
{
     [_animator removeAllBehaviors]; //_animator is my UIDynamicAnimator
      [time invalidate];
}

在我的 app delegate.m

- (void)applicationDidEnterBackground:(UIApplication *)application
{
       gameViewController *new=[[gameViewController   alloc]initWithNibName:@"gameViewController" bundle:nil];
    [new stoptime];
}

1 个答案:

答案 0 :(得分:1)

使用NSNotificationCenter。在视图控制器中,侦听通知(在viewDidLoad中):

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stoptime) name:@"StopTimeNotification" object:nil];

然后,在applicationDidEnterBackground:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"StopTimeNotification" object:nil];
}

最后,在您的stoptime方法中:

-(void)stoptime {

    [_animator removeAllBehaviors]; //_animator is my UIDynamicAnimator
    [time invalidate];
    time = nil;
}

当您的视图控制器即将被释放时,请务必调用以下命令:

[[NSNotificationCenter defaultCenter] removeObserver:self];

另外两条评论:

1 - 当计时器无效时,最好将其设置为nil,以便稍后重复使用

2 - 不要使用new作为任何变量的名称,它是保留的关键字。

修改

您可以使用类似的方法重新启动计时器。