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

时间:2019-02-02 18:04:36

标签: ios swift statusbar

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

我在func viewDidLoad()中尝试过此操作

self.navigationController?.navigationBar.isTranslucent = false

在appDelegate中:

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

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

3 个答案:

答案 0 :(得分:2)

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
        }

答案 1 :(得分:1)

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

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

这可以进入viewDidLoad()的{​​{1}}方法中

答案 2 :(得分:0)

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

override var prefersStatusBarHidden: Bool {
  return true
}

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

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