答案 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