如何使我的导航栏在swift中透明?

时间:2016-02-03 00:06:27

标签: swift swift2 uinavigationbar

我想让我的导航控制器像这样。我的主要观点应该继续保持顶峰。 enter image description here

但是当我尝试实现它时,我得到了这个结果: enter image description here

我该如何处理这个问题。我想在第一张图片中实现类似的东西。有人可以帮忙吗?感谢

4 个答案:

答案 0 :(得分:11)

我在我的应用程序中使用它来使我的navigationBar透明(如果navigationBar在UINavigationController中):

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

现在您仍然可以在导航栏中添加按钮和标题。

编辑:Swift 3(感谢DrBreakalot)

self.navigationController?.navigationBar.setBackgroundImage(‌​UIImage(), for: .default) 
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true

答案 1 :(得分:1)

由于您的视图中已经有了标题和按钮,因此您希望隐藏导航栏而不是使其透明。如果您不想在任何屏幕上显示导航栏,可以取消选中故事板中的“显示导航栏”。

或者,如果您只想在某些屏幕上隐藏导航栏,可以在viewDidLoad()

中设置它
navigationController?.setNavigationBarHidden(true, animated: true)

答案 2 :(得分:0)

这里有一些有助于您前进的代码。您正在做的是创建UIVisualEffectView,这会使事情变得模糊,然后您将其设置为navBar的子视图。

func addBlurEffect() {
    let bounds = self.navigationController?.navigationBar.bounds as CGRect!
    let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light))
    visualEffectView.frame = bounds
    visualEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
    navigationController?.navigationBar.addSubview(visualEffectView)
}

答案 3 :(得分:0)

看起来您的Autolayout设置为上边距而不是视图顶部。您还应该在AppDelegate

中更改状态栏
UIApplication.sharedApplication().statusBarStyle = .LightContent