从背景返回后防止启动画面显示

时间:2011-11-15 21:08:10

标签: iphone ios splash-screen visual-glitch


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

重新产生问题的步骤:

  • 启动应用,启动屏幕显示约。 3秒,应用程序启动。
  • 按主页按钮,应用程序转到后台。
  • 从背景中取回应用程序(双击主屏幕并选择它),显示启动时间大约半秒钟,然后应用程序重新启动。

是否有可能摆脱从背景回来的路上弹出半秒的闪屏?对于这个特定的应用程序来说真的是一个问题。

5 个答案:

答案 0 :(得分:12)

我知道这个问题标记为“已回答” - 但实际情况是答案在我的案例中并不正确,我想分享。

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

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

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

问题解决了。

马修

答案 1 :(得分:10)

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

没有伤害。谢谢所有试图帮助的人! :)

答案 2 :(得分:9)

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

但是,如果某些内容会延迟该过程,例如应用程序尚未正常处于后台(例如在快速任务切换期间),或者其他可预测的内容会延迟启动,则会恢复到启动画面(而不是屏幕截图),以减轻用户体验。

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

答案 3 :(得分:0)

显示启动画面的代码应位于didFinishLaunchingWithOptions方法的appdelegate中。如果是,则仅在您的应用实际启动时显示,而不是从背景返回时显示。

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

    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];
}

答案 4 :(得分:0)

我也有这个问题,现在我已经解决了。原因是你在applicationDidEnterBackground中做了太多事情,试着减少。