2017-03-06 113 views
4

我有三個視圖控制器。在第一個視圖控制器(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] 
    } 

它工作正常,如果我刷回來,而不是點擊後退按鈕。

+0

你而坡平背動畫? – vivek

+0

nope我沒有做任何這樣的事情。 – StudentX

+0

即使您設法執行此操作,這樣的UI看起來也不會流暢。 – kelin

回答

11

使用此功能在thiredVC

override func willMove(toParentViewController parent: UIViewController?) { 
      self.navigationController?.navigationBar.barTintColor = color use in secondVC 
    } 
+2

是的,這工作..只是我必須將isTranslucent屬性設置爲false以及barTintColor。謝謝 – StudentX

+0

啊,這太神奇了,謝謝! – gbhall

+0

你救了我的日子!非常感謝! – Tommy

1

您可以爲SecondVC製作自定義導航欄。並手動調用-popViewController方法返回按鈕單擊。

相關問題