iOS Swift 4 状态栏 - 禁用半透明

iOS Swift 4 Status bar - disable Translucent

我正在尝试让我的 iOS (webView) 应用程序的状态栏不是半透明的。

我在 func viewDidLoad():

中尝试了这个
self.navigationController?.navigationBar.isTranslucent = false

在 appDelegate 中:

    UINavigationBar.appearance().isTranslucent = false
    UINavigationBar.appearance().backgroundColor = .white

这是我滚动页面时得到的结果..

我不认为你可以玩状态栏半透明。但是,您可能想要隐藏它。将以下代码粘贴到您的 ViewController:

override var prefersStatusBarHidden: Bool {
  return true
}

如果它不起作用,请检查您的 Info.plist 状态栏外观是否基于 ViewController。添加:

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

您不能更改状态栏的这些属性。你只能设置,.default,.lightContent。但是如果你愿意,你可以在它下面放置一个视图,它不是半透明的并且有背景颜色。像这样:

let statusBarFrame = UIApplication.shared.statusBarFrame
let statusBarView = UIView(frame: statusBarFrame)
self.view.addSubview(statusBarView)
statusBarView.backgroundColor = .green

那可以在你viewDidLoad()的方法里ViewController

Swift 5.1 iOS 13.0 以防当前弃用...

 if #available(iOS 13.0, *) {

            let window = UIApplication.shared.windows.filter {[=10=].isKeyWindow}.first
            let statusBarFrame = window?.windowScene?.statusBarManager?.statusBarFrame

            let statusBarView = UIView(frame: statusBarFrame!)
            self.view.addSubview(statusBarView)
            statusBarView.backgroundColor = .green
        } else {
            //Below iOS13
            let statusBarFrame = UIApplication.shared.statusBarFrame
            let statusBarView = UIView(frame: statusBarFrame)
            self.view.addSubview(statusBarView)
            statusBarView.backgroundColor = .green
        }

当我尝试将视图从上方滑入屏幕时,这为我解决了这个问题,但在它设置动画时没有在状态栏上看到它:

view.clipsToBounds = true