【发布时间】:2015-09-15 12:00:20
【问题描述】:
前段时间,我们决定将应用程序加载逻辑放入一个单独的函数中,该函数在 DidFinishLaunching 之后调用。我们通过展示一个包含默认启动图像的新 UIViewController 来实现(如 here 所述)。造成这种情况的两个原因是:
- 我们可以在闪屏上自动显示当前版本号。
- 如果加载时间超过大约 10 - 15 秒,则应用程序将被操作系统杀死。直到现在,我们在版本更新期间曾经遇到过这种情况,其中大型数据库/文件重组需要长达 15 秒。如果应用程序被操作系统杀死,数据就会处于损坏状态。
这很好用。现在自从 iOS 8 发生了一些变化,我们应该使用启动屏幕 xib 或故事板。我试图在 UIViewController(我们自己的启动屏幕)中加载 xib,但这导致了 NSInternalInconsistencyException - 加载了“”笔尖但未设置视图出口。我发现,启动屏幕必须是纯static,与原始启动图像相同。
我喜欢只有一个启动屏幕而不是十几个启动图像的概念。我会怎么做?有没有办法以编程方式加载原始启动屏幕 xib 并在我自己的启动屏幕视图控制器中显示它?当然,我还想像以前那样以编程方式添加版本号。
编辑:在 DidFinishLaunching() 中让应用程序进入睡眠状态不是一种选择,请参见上面的第二点。
【问题讨论】:
-
最好在发布时将
viewcontroller显示为splash screen,您可以将其保留在屏幕上,只要您愿意。没有其他方法可以让启动屏幕保持更长时间。 -
我希望给出的答案对你有帮助@Philipp。
-
可能显示加载动画?
-
@Dipen:这正是我想要实现的。只是我想将原始的 LaunchScreen.xib 加载到我自己的视图控制器中,这显然是不可能的,因为当 xib 被标记为“用作启动屏幕”时,它不能有任何插座(需要在视图控制器中加载 xib)。
标签: ios objective-c ios8 xamarin