我正在尝试获取我的iOS(webView)应用程序的状态栏,而不是半透明的。
我在func viewDidLoad()中尝试过此方法:
self.navigationController?.navigationBar.isTranslucent = false
并且在appDelegate中:
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().backgroundColor = .white
您无法更改状态栏的那些属性。您只能设置.default,.lightContent。但是,如果您愿意,可以在其下面放置一个视图,该视图不是半透明的,并且具有背景色。像这样的东西:
let statusBarFrame = UIApplication.shared.statusBarFrame
let statusBarView = UIView(frame: statusBarFrame)
self.view.addSubview(statusBarView)
statusBarView.backgroundColor = .green
可以在viewDidLoad()
的ViewController
方法中使用
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
}
我认为您不能使用状态栏半透明。但是,您可能要隐藏它。将以下代码粘贴到您的ViewController中:
override var prefersStatusBarHidden: Bool {
return true
}
如果不起作用,请在Info.plist
中检查状态栏外观是否基于ViewController。添加此:
<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>