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 更新

苹果官方中文版iPhone X 适配指南


启动图片 launchImage

  1. 若使用LaunchScreen.storyboard, 则自动会拉伸至全屏幕 使用LaunchScreen.storyboard

  2. 若使用Launch Images source 使用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)

参考文章

官方文档iPhone X

用 Swift 判断 iPhone X 机型

Loading Disqus comments...
Table of Contents