iPhone X UI适配小结

2018-11-12 更新
判断是否是iPhone x系列 (iPhone X, iPhone XS, iPhone XS Max, iPhone XR)
判断是否支持 faceID Detect if the device is iPhone X
import LocalAuthentication
extension UIDevice {
/// 是否是iPhone X
///
/// - Returns: iPhone X
public func isiPhoneX() -> Bool {
if #available(iOS 11.0, *) {
return LAContext().biometryType == .faceID
}
return false
}
}
2017-10-07 更新
启动图片 launchImage
-
若使用
LaunchScreen.storyboard, 则自动会拉伸至全屏幕
-
若使用
Launch Images source
需要一张1125px × 2436px分辨率的资源文件


TabBar 高度
- iPhone X 之前 49
- iPhone X 83
判断是否为iPhone X 用 Swift 判断 iPhone X 机型
extension UIDevice {
/// 是否是iPhone X
///
/// - Returns: iPhone X
public func isiPhoneX() -> Bool {
if UIScreen.main.bounds.height == 812 {
return true
}
return false
}
}
因为自己项目是OC 和 Swift 混编, 所以增加了一个宏
#define TABBAR_HEIGHT ([UIDevice currentDevice].isiPhoneX ? 83 : 49)
StatusBar 高度
正常情况下 statusBar 高度为22, 但是在iPhone X 或 打开热点, 并被连接或后台使用定位等情况下 statusBar高度会改变, 所以最好使用系统方法获取statusBar高度
CGRectGetHeight([UIApplication sharedApplication].statusBarFrame)