推送 uiviewcontroller 时滞后

Wil*_*jay 6 xcode uinavigationcontroller ios swift

当我使用 storyboard segue 时,在屏幕上显示另一个视图控制器非常流畅。但是,当我不使用 storyboard 时,只需添加一行简单的代码 with navigationController?.pushViewController(UIViewController(), animated: true),它的过渡有点滞后。

我还阅读了推送视图控制器 (iOS) 时的延迟。但即使我正在推送一个全新的视图控制器(里面没有额外的代码),转换仍然有点滞后,知道吗?

在此处输入图片说明

Ked*_*kar 5

斯威夫特 5.3,Xcode 12

我遇到了同样的问题,尝试添加到主线程,但显然问题是我正在推送以编程方式创建的 viewController,它的 backgroundColor 为零。只需将 pushViewController 中的颜色设置为其他颜色,即可解决问题。

self.view.backgroundColor = yourColor
Run Code Online (Sandbox Code Playgroud)

  • 是的,这就是根本原因。`self.view.backgroundColor = .systemBackground` 将支持深色模式。 (2认同)

Wil*_*jay 1

我在模拟器上用慢速动画进行调试。正如 @yesleon 提到的,“滞后”是底层的先前视图控制器\xe2\x80\x99s 视图。当 viewWillDisappear 时,我将前一个视图的 alpha 设置为 0,当 viewWillAppear 时,我将前一个视图的 alpha 设置为 1。现在推送到新的控制器时看起来好多了,但是当推送回原始视图控制器时,它仍然有点不完美,有更好的解决方案吗?

\n\n
override 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