判断是否是iPhoneX系列机型

作者: 无夜之星辰 | 来源:发表于2018-09-23 02:36 被阅读311次

思路

iPhoneX系列都是刘海屏,状态栏高度都是44,不管是普通状态下还是特殊状态下(通话中或热点被接入)。

其余机型的状态栏高度在常规状态下是20,特殊状态下(通话中或热点被接入)是40。

因此“状态栏高度==44”可以作为切入点,判断是否是iPhoneX系列机型的宏如下:

#define iPhoneXSeries (([[UIApplication sharedApplication] statusBarFrame].size.height == 44.0f) ? (YES):(NO))

隐患

这个判断方法目前可行,但是未来是否可行就不得而知了,毕竟将来iPhone会设计成哪样没有人知道。

所以我就去S.O.问了一下,想看看是否有更合适的做法,结果让大佬成功的装了一次逼还完美的避开了我的问题:
https://stackoverflow.com/questions/52444359/how-to-judge-the-iphone-is-iphonex-series

相关文章

网友评论

  • vanessa_imp:可以判断手机型号,这个在模拟器上不行,也可以判断手机宽高是否大于等于812(横屏就是宽了),也可以判断safeArea的底部是否大于0,如果是横屏就是判断left和right是否大于0。方法还是挺多的。
  • Henrya:试试高宽比
    #define KIsiPhoneXAll (((int)((SCREEN_HEIGHT/SCREEN_WIDTH)*100) == 216)?YES:NO)
    1cdb19c230be:我想问下各位大佬 如果横屏状态下 咋整
    无夜之星辰:@Henrya iPhone出新,豪杰辈出
    Henrya:我用这招
  • 绘色:让大佬装了次逼,还没给解决问题,是最骚的:joy:
    无夜之星辰:是的,不过这个问题,确实没有真正的解决方法,他们任何人给的答案都只是在当前有效
  • 喜欢文学的工科男:程序猿的世界,我不懂😂
  • DevinZ:SCREEN_HEIGHT >= 812 到目前为止就都是iphoneX系列了吧
    Jackie虎:@DevinZ 我就是这一招
    DevinZ:@无夜之星辰 let IPHONEX_SERIES = SCREEN_HEIGHT >= 812 ? true : false 哈哈 😂 估计能对付用一阵
    无夜之星辰:还有这招:joy: 可以,很强势
  • 波儿菜:使用设备型号判断可能好一些:
    + (BOOL)isIphoneX {
    static BOOL isIphoneX = NO;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    NSSet *platformSet = [NSSet setWithObjects:@"iPhone10,3", @"iPhone10,6" @"iPhone11,8", @"iPhone11,2", @"iPhone11,4", @"iPhone11,6", nil];
    struct utsname systemInfo;
    uname(&systemInfo);
    NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
    if ([platform isEqualToString:@"x86_64"] || [platform isEqualToString:@"i386"])
    isIphoneX = YBIMAGEBROWSER_HEIGHT == 812;
    else
    isIphoneX = [platformSet containsObject:platform];
    });
    return isIphoneX;
    }
    ArchLL:@indulge_in NSProcessInfo.processInfo.environment[@"SIMULATOR_MODEL_IDENTIFIER"]; 可以通过这种方式获取模拟器的详细型号,如 iPhone11,6
    无夜之星辰:@indulge_in 可以,这招也OK
    波儿菜:如果是 x86_64 和 i386 表示模拟器就自己随便判断一下
  • CepheusSun:快师傅有没有试过如果隐藏了状态栏,这个值是多少:joy:
    无夜之星辰:重新试了下隐藏状态栏,发现隐藏了就是0了:sweat_smile:
    sinno:@无夜之星辰 @property(nonatomic,readonly) CGRect statusBarFrame __TVOS_PROHIBITED; // returns CGRectZero if the status bar is hidden
    CepheusSun:@无夜之星辰 谢谢快师傅的反馈

本文标题:判断是否是iPhoneX系列机型

本文链接:https://www.haomeiwen.com/subject/rqdfoftx.html