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)