应用程序有一个黄色图像作为背景,状态栏设置为隐藏,它在除iPhone X之外的其他设备上运行良好。
状态栏粘贴在白色文字颜色上。
我尝试添加以下代码,但仍然失败了:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .default
}
还有其他建议吗?
感谢。
答案 0 :(得分:0)
方法1:
您必须将此值添加到plist:" 查看基于控制器的状态栏外观"并将其设置为" 否"。
之后在AppDelegate
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
if #available(iOS 11.0, *) {
if (window?.safeAreaInsets.top)! > CGFloat(0.0) || window?.safeAreaInsets != .zero {
print("iPhone X")
application.isStatusBarHidden = true
//or UIApplication.shared.isStatusBarHidden = true
}
else {
print("Not iPhone X")
application.isStatusBarHidden = true
}
}
return true
}
方法2: " 查看基于控制器的状态栏外观"并将其设置为" 是"。 默认情况下。
与iOS11 + setStatusBarHidden
&不推荐使用isStatusBarHidden
,
[prefersStatusBarHidden] [2]可从iOS7 +获得,我们可以在ViewController
上进行状态栏可见性设置as-
struct StatusBarInfo {
static var isToHiddenStatus = false
}
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if #available(iOS 11.0, *) {
if (window?.safeAreaInsets.top)! > CGFloat(0.0) || window?.safeAreaInsets != .zero {
print("iPhone X")
StatusBarInfo.isToHiddenStatus = true
}
else {
StatusBarInfo.isToHiddenStatus = true
print("Not iPhone X")
}
}
return true
}
在ViewController.Swift中
override var prefersStatusBarHidden: Bool {
return StatusBarInfo.isToHiddenStatus
}