我有三个视图控制器.在第一个视图控制器(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 }