iOS:如何延迟启动屏幕?

启动应用程序时, LaunchScreen.xib将在所有资产初始化后立即移除。

我想让启动屏幕停留至less1秒。

有没有办法做到这一点?

谢谢!

您可以创build一个使用LaunchScreen故事板的视图控制器,在applicationDidFinishLaunchingapplicationWillFinishLaunching上呈现(不是animation),并在需要时closures它。

请记住,苹果不鼓励这样做,因为它给人的印象是你的应用需要更长的时间才能启动,这是不好的用户体验,可能会导致你的一些用户删除你的应用。

以为我在这个问题上思考问题,我想在评论中写下来,但是不会允许多行。 我相信很多应用程序开发人员希望这样做(延迟启动屏幕)是因为他们想为自己的公司构build应用程序/游戏的品牌。

话虽如此,启动屏幕并不是为此devise的,正如里克·马迪(Rick Maddy)在评论部分解释的其他答案之一。 启动屏幕的目的是通过显示空的UI,让用户感觉应用程序即时运行,而实际的数据在后面加载(willAppear等)。

因此,为了达到许多开发人员所希望的,与苹果的HIG保持一致,你可以做的是:

  1. 按照Apple HIG的预期在启动屏幕上显示UI模板。
  2. 在主屏幕加载时,加载另一个显示品牌“介绍”的VC。 确保这只运行一次(在NSUserDefaults一个简单的标志应该做的伎俩)。
  3. 用户应该被允许跳过这个,如果它是一个很长的“介绍”。

通过点击某个地方的“查看介绍”button(可能在页面中),用户可以使用相同的“简介”VC。

永远不要睡在主线上。 这样做实际上可能会导致iOS杀死您的应用程序,从而导致启动时间过长

如果你想简单的使用,你可以使用NSThread

 [NSThread sleepForTimeInterval:(NSTimeInterval)]; 

你可以把这段代码放到applicationDidFinishLaunching方法的第一行。

例如,显示default.png为1.0秒。

 - (void) applicationDidFinishLaunching:(UIApplication*)application { [NSThread sleepForTimeInterval:1.0]; } 

它会停止闪屏1.0秒。

对于保持屏幕,您可以将线程以睡眠模式发送一段时间,但是此时不能执行任何操作

 - (void) applicationDidFinishLaunching:(UIApplication*)application{[NSThread sleepForTimeInterval:5.0];}