2

设置后navigationBarHidden=YESstatusBar就变成了transparent

唯一的方法是设置 statusBar backgroundcolor=white?(实际上它可以工作......)

在此处输入图像描述

4

1 回答 1

1

您可以使用以下技巧:

func setStatusBarColor() {
        if #available(iOS 13, *)
        {
            let keyWindow = UIApplication.shared.connectedScenes
                    .filter({$0.activationState == .foregroundActive})
                    .compactMap({$0 as? UIWindowScene})
                    .first?.windows
                    .filter({$0.isKeyWindow}).first
            let statusBar = UIView(frame: (keyWindow?.windowScene?.statusBarManager?.statusBarFrame) ?? CGRect(x: 0, y: 0, width: screenWidth, height: statubarHeight))
            statusBar.backgroundColor = .white //your color
            keyWindow?.addSubview(statusBar)
        } else {
            let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
            if statusBar.responds(to:#selector(setter: UIView.backgroundColor)) {
                statusBar.backgroundColor = .white //your color
            }
            UIApplication.shared.statusBarStyle = .lightContent
        }
    }

你也可以使用:

yourController.view.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true

于 2022-03-01T21:52:35.180 回答