iOS机型 iPhone X/XS/XR 判断的5种方式总结

目前已发布的所有 iPhone 设备的屏幕数据,包括了最新上市的 iPhone XS、iPhone XS Max 和 iPhone XR,请参考《iPhone 屏幕分辨率终极指南》

最后我们介绍了一种在代码中通过获取屏幕的高度判断是否等于 812.0896.0 来检测设备是否为 iPhone X 的方法,但该方法存在小瑕疵,需要考虑一下两点:

  1. 当 App 支持横竖屏切换时,在横屏模式下也能够正确判断;
  2. 在模拟器中调试时,能够正确判断当前所选则的模拟器类型是不是 iPhone X;

因此,本条小集重新整理一下我们目前所了解到的几种检测设备是否为 iPhone X 的方式,供大家参考,不足之处欢迎补充。

  1. 通过获取设备的 device model 来判断
  2. 通过获取屏幕的宽高来判断
  3. 通过底部安全区域的高度来判断
  4. 通过是否支持 FaceID 判断
  5. 通过 UIStatusBar 的高度判断

备注:这里所说的 iPhone X 泛指屏幕大小为 5.8、6.1、6.5 英寸三种尺寸的 iPhone 设备。

在没有适配的情况下,新设备都是以放大模式自动适配的(以 5.8 寸的 iPhone X 屏幕为基准等比例放大),此时在代码中获取到的屏幕宽高都为 375pt * 812pt,你需要在启动图 LaunchImage 添加对应分辨率的图片就能获取到真正的 414pt * 896pt 高度。

方式一:通过获取设备的 device model 来判断

每一台 iOS 设备都有对应的硬件编码/标识符,称为 device model 或者叫 machine name,我们可以通过如下两种方法来获取 device model/machine name。

#import <sys/sysctl.h>
#import <sys/utsname.h>

// 获取 device model/machine name 的方法一
+ (NSString *)machineName1 {
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = (char *)malloc(size);
    if (machine == NULL) {
        return nil;
    }
    sysctlbyname("hw.machine", machine, &size, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值