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 

的和你做。快乐的编码!

相关问题