我有一个单屏教程View Controller。我希望这个教程VC只显示一次(userdefaults),但我希望从启动屏幕完成时平滑过渡 - >教程VC。
现在 - 启动屏幕完成,然后App的主界面显示一瞬间,然后教程VC显示出来。我想删除主界面的“闪烁”。
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将不胜感激。
答案 0 :(得分:0)
您正在viewDidAppear func上展示tutVC,该func在加载屏幕后执行。
尝试在override func viewDidLoad()
或在加载屏幕之前执行的override func viewWillAppear(_ animated: Bool)
方法上调用fireTutorial()。
答案 1 :(得分:0)
我采用了稍微不同的方法来解决这个问题。
我将主应用VC嵌入到导航控制器中,然后在App Delegate didFinishLaunchingWithOptions中推送tutorialVC。
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
答案 2 :(得分:-1)
在viewWillAppear或viewWillLayoutSubviews()中编写此代码,而不是viewDidAppear