如何在 Swift 中检测当前设备 (iPhone) 是否有物理 home 按钮,比如: iPhone X,iPhone Xs,iPhone Xs Max,iPhone Xr?
如何在 Swift 中检测当前设备 (iPhone) 是否有物理 home 按钮,比如: iPhone X,iPhone Xs,iPhone Xs Max,iPhone Xr?
检查安全区域:
if @available(iOS 11.0, *),
UIApplication.sharedApplication.keyWindow?.safeAreaInsets.bottom > 0 {
return true
}
return false
Swift 4.2 版本:
var isBottom: Bool {
if #available(iOS 11.0, *), let keyWindow = UIApplication.shared.keyWindow, keyWindow.safeAreaInsets.bottom > 0 {
return true
}
return false
}
你也可以检查设备类型(查看这个帖子),但检查安全区域可能是最简单的方法。
return true
}
return false```
如果 iOS 版本高于等于 11.0,且当前应用程序有主窗口(`keyWindow`)且底部安全区域的值大于 0,则返回 `true`。否则返回 `false`。
- Adam WaiteiOS 13及以上版本:
var isBottom: Bool {
if #available(iOS 13.0, *), UIApplication.shared.windows[0].safeAreaInsets.bottom > 0 {
return true
}
return false
}
iOS版本 >= 13.0
UIApplication.shared.windows 在iOS 15.0中已被弃用,我们可以用以下方式替代:
var hasHomeButton: Bool {
let window = UIApplication
.shared
.connectedScenes
.compactMap { $0 as? UIWindowScene }
.flatMap { $0.windows }
.first { $0.isKeyWindow }
guard let safeAreaBottom = window?.safeAreaInsets.bottom else {
return false
}
return safeAreaBottom <= 0
}