Wil*_*jay 6 xcode uinavigationcontroller ios swift
当我使用 storyboard segue 时,在屏幕上显示另一个视图控制器非常流畅。但是,当我不使用 storyboard 时,只需添加一行简单的代码 with navigationController?.pushViewController(UIViewController(), animated: true)
,它的过渡有点滞后。
我还阅读了推送视图控制器 (iOS) 时的延迟。但即使我正在推送一个全新的视图控制器(里面没有额外的代码),转换仍然有点滞后,知道吗?
斯威夫特 5.3,Xcode 12
我遇到了同样的问题,尝试添加到主线程,但显然问题是我正在推送以编程方式创建的 viewController,它的 backgroundColor 为零。只需将 pushViewController 中的颜色设置为其他颜色,即可解决问题。
self.view.backgroundColor = yourColor
Run Code Online (Sandbox Code Playgroud)
我在模拟器上用慢速动画进行调试。正如 @yesleon 提到的,“滞后”是底层的先前视图控制器\xe2\x80\x99s 视图。当 viewWillDisappear 时,我将前一个视图的 alpha 设置为 0,当 viewWillAppear 时,我将前一个视图的 alpha 设置为 1。现在推送到新的控制器时看起来好多了,但是当推送回原始视图控制器时,它仍然有点不完美,有更好的解决方案吗?
\n\noverride func viewWillAppear(_ animated: Bool) {\n super.viewWillAppear(animated)\n self.tabBarController?.tabBar.isHidden = false\n view.alpha = 1.0\n}\n\n\noverride func viewWillDisappear(_ animated: Bool) {\n super.viewWillDisappear(animated)\n self.tabBarController?.tabBar.isHidden = true\n view.alpha = 0.0\n}\n\n@IBAction func barbuttonDidTapped(_ sender: UIBarButtonItem) {\n navigationController?.pushViewController(UIViewController(), animated: true)\n}\n
Run Code Online (Sandbox Code Playgroud)\n