【发布时间】:2010-11-15 00:48:29
【问题描述】:
我在 viewDidLoad 中有一个动画,它会在应用程序首次启动时运行。如果您退出应用程序,然后再次启动它,动画不会播放。
我将如何在每次打开应用程序时播放动画,
感谢您的帮助
【问题讨论】:
标签: iphone objective-c animation
我在 viewDidLoad 中有一个动画,它会在应用程序首次启动时运行。如果您退出应用程序,然后再次启动它,动画不会播放。
我将如何在每次打开应用程序时播放动画,
感谢您的帮助
【问题讨论】:
标签: iphone objective-c animation
在 iOS 4 中,按下主页按钮不会终止应用程序,而是将其挂起。当应用再次激活时,会发布UIApplicationDidBecomeActiveNotification。注册该通知并在您的处理程序中启动动画。
编辑:在下面添加代码。
这是一种方法:让您的视图控制器在其viewWillAppear: 方法中成为UIApplicationDidBecomeActiveNotification 的观察者。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(performAnimation:) name:UIApplicationDidBecomeActiveNotification object:nil];
}
在视图控制器的 viewDidDisappear: 方法中取消注册通知。
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
}
最后,将你的动画代码放入注册接收通知时指定的选择器中。
- (void)performAnimation:(NSNotification *)aNotification {
// Animation code.
}
【讨论】:
将动画放在类似的方法中
applicationDidBecomeActive:
UIApplicationDelegate
【讨论】:
您的应用很可能没有退出并重新加载。默认情况下,在 iOS 4 上,应用程序在用户“退出”应用程序时继续运行,并在用户“重新启动”时从中断处继续运行。
查看您的应用委托中的 applicationDidBecomeActive。当应用停用时,您可以从那里开始您的动画。
【讨论】:
如何在您的应用程序委托中设置一个标志来控制此行为:
当应用进入前台或激活时将其设置为YES(applicationWillEnterForeground:、applicationDidBecomeActive:)
在您的视图控制器中检查此标志是否为 NO in -viewWillAppear:
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
if(!delegate.animationPlayed) {
//perform animation here...
delegate.animationPlayed = YES;
}
【讨论】: