iOS:如何延迟启动屏幕?
启动应用程序时, LaunchScreen.xib将在所有资产初始化后立即移除。
我想让启动屏幕停留至less1秒。
有没有办法做到这一点?
谢谢!
您可以创build一个使用LaunchScreen故事板的视图控制器,在applicationDidFinishLaunching
或applicationWillFinishLaunching
上呈现(不是animation),并在需要时closures它。
请记住,苹果不鼓励这样做,因为它给人的印象是你的应用需要更长的时间才能启动,这是不好的用户体验,可能会导致你的一些用户删除你的应用。
以为我在这个问题上思考问题,我想在评论中写下来,但是不会允许多行。 我相信很多应用程序开发人员希望这样做(延迟启动屏幕)是因为他们想为自己的公司构build应用程序/游戏的品牌。
话虽如此,启动屏幕并不是为此devise的,正如里克·马迪(Rick Maddy)在评论部分解释的其他答案之一。 启动屏幕的目的是通过显示空的UI,让用户感觉应用程序即时运行,而实际的数据在后面加载(willAppear等)。
因此,为了达到许多开发人员所希望的,与苹果的HIG保持一致,你可以做的是:
- 按照Apple HIG的预期在启动屏幕上显示UI模板。
- 在主屏幕加载时,加载另一个显示品牌“介绍”的VC。 确保这只运行一次(在NSUserDefaults一个简单的标志应该做的伎俩)。
- 用户应该被允许跳过这个,如果它是一个很长的“介绍”。
通过点击某个地方的“查看介绍”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];}