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

DJa*_*ack 5 statusbar ios swift

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

我在 func viewDidLoad() 中试过这个:

self.navigationController?.navigationBar.isTranslucent = false
Run Code Online (Sandbox Code Playgroud)

这在 appDelegate 中:

    UINavigationBar.appearance().isTranslucent = false
    UINavigationBar.appearance().backgroundColor = .white
Run Code Online (Sandbox Code Playgroud)

这就是我滚动页面时得到的.. 在此处输入图片说明

Mar*_*hex 8

Swift 5.1 iOS 13.0 以防万一当前的弃用...

 if #available(iOS 13.0, *) {

            let window = UIApplication.shared.windows.filter {$0.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
        }
Run Code Online (Sandbox Code Playgroud)


小智 7

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

let statusBarFrame = UIApplication.shared.statusBarFrame
let statusBarView = UIView(frame: statusBarFrame)
self.view.addSubview(statusBarView)
statusBarView.backgroundColor = .green
Run Code Online (Sandbox Code Playgroud)

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