如何在 Swift 中使 iPhone 状态栏透明?
How do I make the iPhone status bar transparent in Swift?
我希望隐藏导航栏和状态栏以使其透明。我在下面有一张图片,我想占据整个 space。到目前为止,我已经隐藏了导航栏,但状态栏仍然是白色的——这是在 viewDidLoad()
:
self.navigationController?.setNavigationBarHidden(true, animated: true)
另外,如何将后退按钮重新添加到导航栏?
谢谢!
我当前的 iPhone 模拟器的屏幕截图:
根据 Mohy Gh 的代码编辑:
Swift 3: 对于整个应用程序:
在 AppDelegate
的 didFinishLaunchingWithOptions
方法中执行此操作而不是隐藏导航栏:
// Sets navigationBar's background to a blank/empty image
UINavigationBar.appearance().setBackgroundImage(UIImage(),
for: .default)
// Sets shadow (line below the bar) to a blank image
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().isTranslucent = true
编辑: 隐藏 navigationBar
为您的视图控制器中的一个特定视图控制器这样做:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let navigationBar = self.navigationController?.navigationBar
navigationBar?.setBackgroundImage(UIImage(), for: .default)
navigationBar?.shadowImage = UIImage()
navigationBar?.isTranslucent = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
let navigationBar = self.navigationController?.navigationBar
navigationBar?.shadowImage = nil
navigationBar?.setBackgroundImage(nil, for: .default)
navigationBar?.isTranslucent = false
}
使 navigationBar
透明后,您需要将 imageView
的顶部约束设置为 topLayoutGuid
= 0
如果你还想隐藏 statusBar
一个 viewController
也把这个放在你想要的 viewController:
override var prefersStatusBarHidden: Bool {
return true
}
我希望隐藏导航栏和状态栏以使其透明。我在下面有一张图片,我想占据整个 space。到目前为止,我已经隐藏了导航栏,但状态栏仍然是白色的——这是在 viewDidLoad()
:
self.navigationController?.setNavigationBarHidden(true, animated: true)
另外,如何将后退按钮重新添加到导航栏?
谢谢!
我当前的 iPhone 模拟器的屏幕截图:
根据 Mohy Gh 的代码编辑:
Swift 3: 对于整个应用程序:
在 AppDelegate
的 didFinishLaunchingWithOptions
方法中执行此操作而不是隐藏导航栏:
// Sets navigationBar's background to a blank/empty image
UINavigationBar.appearance().setBackgroundImage(UIImage(),
for: .default)
// Sets shadow (line below the bar) to a blank image
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().isTranslucent = true
编辑: 隐藏 navigationBar
为您的视图控制器中的一个特定视图控制器这样做:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let navigationBar = self.navigationController?.navigationBar
navigationBar?.setBackgroundImage(UIImage(), for: .default)
navigationBar?.shadowImage = UIImage()
navigationBar?.isTranslucent = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
let navigationBar = self.navigationController?.navigationBar
navigationBar?.shadowImage = nil
navigationBar?.setBackgroundImage(nil, for: .default)
navigationBar?.isTranslucent = false
}
使 navigationBar
透明后,您需要将 imageView
的顶部约束设置为 topLayoutGuid
= 0
如果你还想隐藏 statusBar
一个 viewController
也把这个放在你想要的 viewController:
override var prefersStatusBarHidden: Bool {
return true
}