在启动屏幕关闭后立即显示一个特定的视图控制器

Presenting a specific view controller once immediately after launch screen closes

我有一个单屏视图控制器教程。我希望本教程 VC 只显示一次 (userdefaults),但我希望从启动屏幕完成时平稳过渡 -> 教程 VC.

现在 - 启动屏幕完成,然后应用程序的主界面显示一瞬间,然后显示教程 VC。我想去掉主界面的这个"flashing"

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    if !didShowTut {
        fireTutorial()
        didShowTut = true
    }
}

func fireTutorial() {
    let tutVC = UIStoryboard(name: "FirstTutorial", bundle: nil).instantiateViewController(withIdentifier: "TutorialSBID") as UIViewController
    tutVC.modalPresentationStyle = .overCurrentContext
    self.present(tutVC, animated: false, completion: nil)
}

任何帮助创建从启动屏幕 -> 教程 VC 的平滑过渡的帮助将不胜感激。

将此代码写入 viewWillAppear 或 viewWillLayoutSubviews() 而不是 viewDidAppear

您正在加载屏幕后执行的 viewDidAppear 函数中显示 tutVC。

尝试在 override func viewDidLoad() 或在加载屏幕之前执行的 override func viewWillAppear(_ animated: Bool) 方法上调用 fireTutorial()。

我采用了稍微不同的方法来解决这个问题。

我将主应用程序 VC 嵌入到导航控制器中,然后在 App Delegate didFinishLaunchingWithOptions 中推送教程VC。

let tutorialVC = UIStoryboard(name: "FirstTutorial", bundle: nil)
let firstVC = tutorialVC.instantiateViewController(withIdentifier: "TutorialSBID") as UIViewController
if let navigationController = self.window?.rootViewController as? UINavigationController
{
    navigationController.pushViewController(firstVC, animated: false)
}
return true