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

问题描述 投票:1回答:3

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

我在func viewDidLoad()中尝试过此方法:

self.navigationController?.navigationBar.isTranslucent = false

并且在appDelegate中:

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

这是滚动页面时得到的。enter image description here

ios swift statusbar
3个回答
3
投票

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

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

可以在viewDidLoad()ViewController方法中使用


1
投票

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
        }

0
投票

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

override var prefersStatusBarHidden: Bool {
  return true
}

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

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>
© www.soinside.com 2019 - 2024. All rights reserved.