如果不是 iPhone X,则希望隐藏状态栏;如果是 iPhone X,则希望显示状态栏。
这很可能必须以编程方式完成,因为 plist 中没有支持此功能的键(我发现的最接近的键是 UIStatusBarHidden
)
最佳答案
方法一:
您必须将此值添加到 plist:“查看基于 Controller 的状态栏外观”并将其设置为“NO”。
之后将其添加到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 = false
//or UIApplication.shared.isStatusBarHidden = true
}
else {
print("Not iPhone X")
application.isStatusBarHidden = true
}
}
return true
}
方法2: “查看基于 Controller 的状态栏外观”并将其设置为“是”。 默认情况下。
在 iOS11+ 中, setStatusBarHidden
和 isStatusBarHidden
已被弃用,
prefersStatusBarHidden从 iOS7+ 开始可用,我们可以通过 ViewController
进行状态栏可见性设置 -
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 = false
}
else {
StatusBarInfo.isToHiddenStatus = true
print("Not iPhone X")
}
}
return true
}
在 ViewController.Swift 中
override var prefersStatusBarHidden: Bool {
return StatusBarInfo.isToHiddenStatus
}
关于swift - 仅在 iPhone X 上显示状态栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46677240/