如何让 swift 中的导航栏透明?
How do I make my navigation bar transparent in swift?
我想把我的导航控制器做成这样。我的主要观点应该继续到顶部。
但是当我尝试实施它时,我得到了这个结果:
我该如何处理这个问题。我想在第一张图片中实现类似的东西。有人可以帮忙吗?谢谢
这里有一些代码可以帮助您开始。你正在做的是创建一个 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)
}
由于您的视图中已有标题和按钮,您似乎想要隐藏导航栏而不是使其透明。如果您不想在任何屏幕上显示导航栏,您可以取消选中 Storyboard 中的 'Shows Navigation Bar'。
或者,如果你只想在某些屏幕上隐藏导航栏,你可以在viewDidLoad()中设置
navigationController?.setNavigationBarHidden(true, animated: true)
您的自动版式似乎设置为上边距而不是视图顶部。您还应该像 AppDelegate
中那样更改状态栏
UIApplication.sharedApplication().statusBarStyle = .LightContent
我在我的应用程序中使用它来使我的导航栏透明(如果导航栏在 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
我想把我的导航控制器做成这样。我的主要观点应该继续到顶部。
但是当我尝试实施它时,我得到了这个结果:
我该如何处理这个问题。我想在第一张图片中实现类似的东西。有人可以帮忙吗?谢谢
这里有一些代码可以帮助您开始。你正在做的是创建一个 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)
}
由于您的视图中已有标题和按钮,您似乎想要隐藏导航栏而不是使其透明。如果您不想在任何屏幕上显示导航栏,您可以取消选中 Storyboard 中的 'Shows Navigation Bar'。
或者,如果你只想在某些屏幕上隐藏导航栏,你可以在viewDidLoad()中设置
navigationController?.setNavigationBarHidden(true, animated: true)
您的自动版式似乎设置为上边距而不是视图顶部。您还应该像 AppDelegate
UIApplication.sharedApplication().statusBarStyle = .LightContent
我在我的应用程序中使用它来使我的导航栏透明(如果导航栏在 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