【问题标题】:How to stop UIDynamicAnimator in applicationDidEnterBackground如何在 applicationDidEnterBackground 中停止 UIDynamicAnimator
【发布时间】:2014-08-26 04:28:57
【问题描述】:

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

在我的游戏视图controller.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];
}

【问题讨论】:

    标签: ios objective-c xcode ios7 ios6


    【解决方案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];
    

    另外两个 cmets:

    1 - 使计时器无效时,最好也将其设置为 nil,这样您以后可以重复使用它

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

    编辑

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

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 2019-07-16
      相关资源
      最近更新 更多