我有三个视图控制器.在第一个视图控制器(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 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。