0

我在UINavigationController中有三個viewControllers。在第二個我需要隱藏導航欄但不是後退按鈕和其他酒吧按鈕。出於這個原因,我不能使用isNavigationBarHidden = true
目前我處理上述如下:UINavigationController只隱藏navigationBar - Back動畫問題

第一的viewController:

override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     self.navigationController?.navigationBar.barTintColor = Constants.kThemeRedColor 
     self.navigationController?.navigationBar.tintColor = UIColor.white 
     self.navigationController?.navigationBar.barStyle = .black 
     self.navigationController?.navigationBar.isTranslucent = false 
    } 

二的viewController(只隱藏的導航欄):

override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) 
     self.navigationController?.navigationBar.shadowImage = UIImage() 
     self.navigationController?.navigationBar.isTranslucent = true 
     self.navigationController?.view.backgroundColor = UIColor.clear 
    } 

這裏的問題是,當我從firstViewController導航到firstViewController時,在第一個viewController分別消失和出現的很短時間內,我看到一個黑色的導航欄。我知道這是因爲在第二個viewController中編寫的代碼。但我沒有任何其他解決方案。附加截圖:

第一的viewController(應該如何):

enter image description here

二的viewController:

enter image description here

第一的viewController(有黑色導航欄持續時間短):

enter image description here

+0

什麼是你的免費視圖顏色?在navbar下面是tableview嗎? –

回答

1

First viewController,還設置了backgroundImagenavigationBar作爲nilshadowImage,即

class FirstVC: UIViewController 
{ 
    override func viewWillAppear(_ animated: Bool) 
    { 
     super.viewWillAppear(animated) 
     self.navigationController?.navigationBar.isTranslucent = true 
     self.navigationController?.navigationBar.setBackgroundImage(nil, for: UIBarMetrics.default) 
     self.navigationController?.navigationBar.shadowImage = nil 
     self.navigationController?.navigationBar.barTintColor = .red 
     self.navigationController?.navigationBar.tintColor = UIColor.white 
     self.navigationController?.navigationBar.barStyle = .black 
    } 
} 

class SecondVC: UIViewController 
{ 
    override func viewWillAppear(_ animated: Bool) 
    { 
     super.viewWillAppear(animated) 

     self.navigationController?.navigationBar.isTranslucent = true 
     self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) 
     self.navigationController?.view.backgroundColor = UIColor.clear 
     self.navigationController?.navigationBar.shadowImage = UIImage() 
    } 
} 
+0

這工作得很好。謝謝。我也需要問,從VC1到VC2,同樣的事情發生。在很短的時間內,導航到VC2時,VC1的導航欄會變黑。我該如何解決這個問題? – Nitish

+0

得到了這個工作。解決方案: 在VC2中,設置爲: self.navigationController?.view.backgroundColor = Constants.kThemeRedColor – Nitish

0

您應該隱藏導航器的導航欄和使用的UIView使用自定義導航欄。我認爲它會解決你的問題。

0

首先的viewController與用於對由於一個UIWindow的背景顏色的快速過渡時間短黑導航欄示出在其上navigaion-酒吧過渡正在發生。簡單地說,在你的didFinishLaunchingWithOptions加入這一行:方法的AppDelegate

window?.backgroundColor = Constants.kThemeRedColor 

的和你做。快樂的編碼!

相關問題