检测设备是否iPhone X

1. 通过获取设备的 device model 来判断

每一台 iOS 设备都有对应的硬件编码/标识符,称为 device model 或者叫 machine name

机型对应的device model
iPhone XiPhone10,3 和 iPhone10,6
iPhone XSiPhone11,2
iPhone XRiPhone11,8
iPhone XS MaxiPhone11,4 和 iPhone11,6

参考地址

我们可以通过获取设备的device model判断是否iPhone X

+ (BOOL)isIPhoneX1
{
    static BOOL isiPhoneX = NO;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
#if TARGET_IPHONE_SIMULATOR
        /**模拟器*/
        NSString *platForm = NSProcessInfo.processInfo.environment[@"SIMULATOR_MODEL_IDENTIFIER"];
#else
        struct utsname systemInfo;
        uname(&systemInfo);
        NSString *platForm = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
#endif
        // 判断 device model 是否为 "iPhone10,3" 和 "iPhone10,6" 或者以 "iPhone11," 开头
        isiPhoneX = [platForm isEqualToString:@"iPhone10,3"]||
                    [platForm isEqualToString:@"iPhone10,6"]||
                    [platForm hasPrefix:@"iPhone11,"];
    });
    return isiPhoneX;
}
2. 通过设备的 宽高 来判断

现在iPhone X设备的屏幕宽高对应的开发尺寸只有两种,分别为 375pt * 812pt414pt * 896pt,因此我们可以根据屏幕的高度来判断设备是否为 iPhone X

+ (BOOL)isIPhoneX2
{
    static BOOL isiPhoneX = NO;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        CGSize screenSize = [UIScreen mainScreen].bounds.size;
        isiPhoneX = (CGSizeEqualToSize(screenSize, CGSizeMake(375, 812))||
                     CGSizeEqualToSize(screenSize, CGSizeMake(812, 375))||
                     CGSizeEqualToSize(screenSize, CGSizeMake(414, 896))||
                     CGSizeEqualToSize(screenSize, CGSizeMake(896, 414)));
    });
    return isiPhoneX;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值