ios – 弹出视图控制器时更改导航栏颜色

我有三个视图控制器.在第一个视图控制器(FirstVC)中,导航栏的条形色调为clearColor,条形本身是半透明的.当我点击某些内容时,我会推送到导航栏需要不透明的SecondVC.所以我将barTintColor设置为某个颜色值,并将isTranslucent设置为false.当我从SecondVC推送到ThirdVC时,导航栏再次需要是半透明的.当我弹出ThirdVC并返回SecondVC时会出现问题.导航栏在一秒钟内显示为透明,然后根据需要变为不透明.我无法理解延迟的原因.

从SecondVC的viewWillAppear()调用以下方法.我试过从ThirdVC的viewWillDisappear()做同样的事情,但没有效果.

fileprivate func configureNavigationBar(){

        self.navigationController?.navigationBar.setBackgroundImage(nil,for: UIBarMetrics.default)
        self.navigationController?.navigationBar.shadowImage = nil
        self.navigationController?.navigationBar.isTranslucent = false
        self.navigationController?.navigationBar.barTintColor = Style.Movie.primaryBackgroundColor
        let titleDict: NSDictionary = [NSForegroundColorAttributeName: UIColor.white]
        self.navigationController?.navigationBar.titleTextAttributes = titleDict as? [String:Any]
    }

如果我向后滑动而不是点击后退按钮,它工作正常.

解决方法

在thiredVC中使用此功能
override func willMove(toParentViewController parent: UIViewController?) {
          self.navigationController?.navigationBar.barTintColor = color use in secondVC
    }

以上是来客网为你收集整理的ios – 弹出视图控制器时更改导航栏颜色全部内容,希望文章能够帮你解决ios – 弹出视图控制器时更改导航栏颜色所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。