我试图让我的iOS(webView)应用的状态栏不透明。
我在func viewDidLoad()中尝试过此操作
self.navigationController?.navigationBar.isTranslucent = false
在appDelegate中:
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().backgroundColor = .white
答案 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/>