如何在 applicationDidEnterBackground 中停止 UIDynamicAnimator
Posted
技术标签:
【中文标题】如何在 applicationDidEnterBackground 中停止 UIDynamicAnimator【英文标题】:How to stop UIDynamicAnimator in applicationDidEnterBackground 【发布时间】: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];
【问题讨论】:
【参考方案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
作为任何变量的名称,它是保留关键字。
编辑
您可以使用类似的方法重新启动计时器。
【讨论】:
以上是关于如何在 applicationDidEnterBackground 中停止 UIDynamicAnimator的主要内容,如果未能解决你的问题,请参考以下文章