【问题标题】:Delay in changing navigationBar.barTintColor in viewWillAppear [duplicate]延迟更改 viewWillAppear 中的 navigationBar.barTintColor [重复]
【发布时间】:2018-01-04 17:34:53
【问题描述】:

我在导航控制器中有两个视图控制器。我正在尝试为每个视图控制器更改导航栏的色调。

我正在使用以下代码来完成此操作:

第一VC:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    navigationController?.navigationBar.barTintColor = .yandasRed
    navigationController?.navigationBar.isTranslucent = false
}

第二个VC:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    navigationController?.navigationBar.barTintColor = .white
    navigationController?.navigationBar.isTranslucent = true
}

FirstVC 到 SecondVC 之间的过渡是无缝的,看起来很棒。但是,当我从 SecondVC 返回到 FirstVC 时,更改导航栏色调颜色会出现延迟。大约 1/2 秒。

这是为什么?我的印象是 viewWillAppear 中的所有代码都是在加载视图控制器之前执行的。

【问题讨论】:

  • 尝试了链接问题中的代码。它在加载时立即使应用程序崩溃。我不了解 isViewLoaded 的工作原理,所以可能代码不完整?

标签: ios swift


【解决方案1】:

基于the answer here,可以实现:

override func willMove(toParentViewController parent: UIViewController?) {
    super.willMove(toParentViewController: parent)
    // Setup your navigation bar
}

我相信这将消除延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    相关资源
    最近更新 更多