如何解决在后台加载UIViewController
我有一个包含UISplitViewController
作为初始视图控制器的应用程序。主视图是UITabBarController
,辅助视图包含4个金属视图。启动时,我需要加载几千个模型和一些大体积的图像,然后将所有数据传递到各种金属环境中,因此会有几秒钟的延迟。
我添加了启动屏幕情节提要和具有循环活动指示器的几乎相同的情节提要(LaunchScreenProgress.storyboard
)。我想在后台加载主视图时显示启动屏幕的进度版本。
目前我有这样的东西:
func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
initialRun = true
//Additional initialization here...
}
func applicationDidBecomeActive(_ application: UIApplication) {
if initialRun {
initialRun = false
//Show the progress view controller.
let initialStoryboard = UIStoryboard(name: "LaunchScreenProgress",bundle: nil)
let viewController = initialStoryboard.instantiateViewController(identifier: "LaunchScreenProgressViewController")
viewController.modalPresentationStyle = .fullScreen
application.windows.first?.rootViewController?.present(viewController,animated: false) { () in
self.window?.rootViewController?.view.isHidden = false
//Listen for loading to finish.
self.loadingFinishedDisposable = self.vhDissector.LoadingFinished.observe { finished in
viewController.modalTransitionStyle = .crossDissolve
viewController.dismiss(animated: true) {
//Other stuff here...
}
}
//More initialization...
}
}
}
最初,我在启动屏幕进度视图顶部短暂显示主视图时遇到问题。我将整个拆分视图控制器设置为隐藏在情节提要中,然后在呈现进度视图后进行显示,这基本上解决了该问题。
因此,在大多数情况下,这是可行的。但是,在启动时隐藏启动屏幕,启动时仍然有问题,窗口短暂显示为黑色(我假设窗口的背景色是?),然后显示进度视图。看起来像是短暂的黑色闪烁,这不是很好的用户体验。
我也有like的感觉,这不是完成我想要的最好的方法。理想情况下,似乎将启动屏幕进度视图控制器设置为初始视图控制器,然后再用代码加载其他视图控制器。
是否可以从情节提要中加载视图控制器,并将其呈现在当前视图控制器的后面?我的google-fu并试图根据我对API的(有些有限)知识来弄清楚我的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。