如何使 UINavigationController 导航栏不可见或至少更改颜色

Posted

技术标签:

【中文标题】如何使 UINavigationController 导航栏不可见或至少更改颜色【英文标题】:How can I make a UINavigationController's UINavigationBar invisible or at least change color 【发布时间】:2014-07-01 21:49:04 【问题描述】:

我有一个 UINavigationController,它链接到一个设置为 RootController 的 ViewController。我启用了 UINavigationBar 并在其中放置了 3 个 UIView,每个 UIView 都带有一个 UIButton。理想情况下,我想让 UINavigationBar 完全不可见,但我也愿意将颜色设置为 ViewController 的背景颜色。我正在快速工作,我尝试过类似

self.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.translucent = true

但是没有任何改变。有没有正确的方法来做到这一点?

【问题讨论】:

【参考方案1】:

在 swift 中,你可以这样做:

self.navigationController?.setNavigationBarHidden(true, animated: true)

详情请咨询Documentation。

【讨论】:

【参考方案2】:

我也在使用 Swift 并且调用 setNavigationBarHidden 没有任何效果。我在 Obj-C 中创建了一个辅助方法,它在给定的导航控制器上调用 setNavigationBarHidden:animated:,效果很好。所以显然这只是一个错误,非常令人沮丧。

【讨论】:

以上是关于如何使 UINavigationController 导航栏不可见或至少更改颜色的主要内容,如果未能解决你的问题,请参考以下文章

将 managedObjectContext 发送到 viewController 崩溃

ID:[...] 的 NSManagedObject 已失效

在 UINavigationController 中设置时图像不显示

UINavigationController - 何时释放推送的视图控制器等

使用 UINavigationController 从另一个控制器更新或重新加载 UIViewController?

为啥我似乎必须在 iOS 应用程序委托中键入 window.rootViewController?