12


我注意到在我开发的每个应用程序中都会发生一些事情。这通常不是问题,但在这个特定的应用程序中,如果我能“修复”它,如果它甚至是一个错误,那就太好了。

重现问题的步骤:

  • 启动应用程序,启动屏幕显示约。3 秒,应用程序启动。
  • 按主页按钮,应用程序进入后台。
  • 从后台带回应用程序(双击主屏幕并选择它),显示启动画面半秒左右,然后应用程序重新启动。

是否有可能摆脱从后台返回时弹出半秒钟的启动画面?对于这个特定的应用程序来说,这确实是一个问题。

4

5 回答 5

12

我知道这个问题被标记为“已回答”——但事实是,在我的情况下答案不正确,我想分享。

我最初得出的结论是,上面最准确的答案来自 QueyJoh——“这是由 iOS 处理的……简短的回答:它不在你的掌控之中。”

但是,经过试验,我设法将问题定位为控制状态栏的 info.plist 文件中的条目。具体来说,我有“UIStatusBarHidden”和“UIStatusBarStyle”的条目。

从我的 plist 文件中删除这些条目会立即阻止我的应用在从我的应用切换并再次返回时显示启动画面。

问题解决了。

马修

于 2012-11-29T19:45:53.533 回答
10

好吧,显然这个问题一开始就不是很聪明:) 这个“问题”只发生在模拟器中。在设备本身上调试时,它按预期工作。

没有造成伤害。感谢所有试图提供帮助的人!:)

于 2011-11-16T00:54:44.727 回答
9

根据我的经验,这是由 iOS 处理的(我会根据经验进行操作,因为我没有看到任何关于此的文档)。如果操作系统可以快速恢复应用程序状态,它将在恢复该状态时显示其先前状态的屏幕截图。

但是,如果某些事情会延迟该过程,例如应用程序尚未正确在后台(例如在快速任务切换期间),或者如果其他可预测的事情会延迟启动,那么它会恢复到启动屏幕(而不是截图),以简化用户体验。

简短的回答:它不在你的手中。

于 2012-07-12T02:40:10.413 回答
0

我也有这个问题,现在解决了

于 2013-10-14T08:13:25.740 回答
0

您显示初始屏幕的代码应该在您的 appdelegate 中的 didFinishLaunchingWithOptions 方法中。如果是,那么它仅在您的应用程序实际启动时出现,而不是在它从后台返回时出现。

使用类似的东西(我知道它使用旧的动画代码,但我敢肯定,如果需要,您可以将其更新为块)...

    splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)];
    splashView.image = [UIImage imageNamed:@"Default.png"];

    [myWindow addSubview:splashView];
    [myWindow bringSubviewToFront:splashView];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
    splashView.alpha = 0.0;
    [UIView commitAnimations];

然后创建一个名为 startupAnimationDone 的方法...

- (void)startupAnimationDone:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {

    [splashView removeFromSuperview];

    [splashView release];
}
于 2011-11-15T21:42:15.253 回答