在 2 个 VC 之间传输时出现导航栏背景颜色问题

Posted

技术标签:

【中文标题】在 2 个 VC 之间传输时出现导航栏背景颜色问题【英文标题】:Having issues with the navigation bar background color when transferring between 2 VCs 【发布时间】:2018-01-19 19:21:54 【问题描述】:

我有一个HomeViewController,它推送到SendViewController,导航栏从深蓝色变为白色:

HomeViewController.swift:

override func viewWillAppear(_ animated: Bool) 
    super.viewWillAppear(animated)
    navigationController?.navigationBar.barStyle = .black
    navigationController?.navigationBar.barTintColor = Styleguide.Colors.darkBlue.color
    navigationController?.navigationBar.tintColor = Styleguide.Colors.lightBlue.color


 override func viewDidLoad() 
    super.viewDidLoad()

    view.backgroundColor = Styleguide.Colors.darkBlue.color

    navigationController?.navigationBar.barTintColor = Styleguide.Colors.darkBlue.color
    navigationController?.navigationBar.tintColor = Styleguide.Colors.lightBlue.color
    navigationController?.navigationBar.isTranslucent = false
    navigationController?.navigationBar.shadowImage = UIImage() // hides the bottom border
    self.navigationItem.hidesBackButton = true
    ... more 

SendViewController.swift

override func viewWillAppear(_ animated: Bool) 
   super.viewWillAppear(animated)
   self.navigationController?.navigationBar.barStyle = .default


override func viewWillDisappear(_ animated: Bool) 
   super.viewWillDisappear(animated)
   self.navigationController?.navigationBar.barStyle = .black


override func viewDidLoad() 
    super.viewDidLoad()

    view.backgroundColor = .white

    self.navigationController?.navigationBar.barTintColor = .white
    self.navigationController?.navigationBar.tintColor = Styleguide.Colors.darkBlue.color
    ... more

问题来了:

Send弹出到Home时,导航栏为白色,动画结束后跳转为深蓝色。 (期望的结果是在弹出时从白色变为深蓝色的动画)

【问题讨论】:

我有类似的问题查看我的帖子,答案对我有帮助:***.com/q/44343355/3900902 查看这篇文章可能对***.com/questions/39835420/…有帮助 【参考方案1】:

尝试添加

 navigationController?.navigationBar.barTintColor = Styleguide.Colors.darkBlue.color
 navigationController?.navigationBar.tintColor = Styleguide.Colors.lightBlue.color

查看SendViewController的WillDissapear

【讨论】:

我有。没有什么不同的。在弹出动画完成之前,该条仍然是白色的,然后跳到深蓝色。因此我很困惑。

以上是关于在 2 个 VC 之间传输时出现导航栏背景颜色问题的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 如何在 2 个视图控制器之间导航时删除黑色导航栏

导航栏颜色未保存

滑动 ViewController 时出现导航栏错误

减小屏幕宽度时出现导航栏问题

如何在所有场景中设置导航栏背景颜色

如何更改 Ionic 2 中导航栏的背景颜色?