【发布时间】:2017-07-25 22:04:58
【问题描述】:
我有三个视图控制器。在第一个视图控制器 (FirstVC) 中,导航栏的 bar tint color 是 clearColor 并且 bar 本身是半透明的。当我点击某个东西时,我会推送到 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]
}
如果我向后滑动而不是点击返回按钮,它会正常工作。
【问题讨论】:
-
你是否在弹回动画时制作动画??
-
不,我没有做那种事。
-
即使你设法实现了这一点,这样的用户界面也不会看起来很流畅。
标签: ios swift uinavigationbar