iOS 适配iPhoneXS Max,iPhoneXS,iPh

作者: 曹波波 | 来源:发表于2018-09-13 17:25 被阅读1929次

关于顶部导航栏

#define SCREEN_HEIGHTL [UIScreen mainScreen].bounds.size.height
#define SCREEN_WIDTHL [UIScreen mainScreen].bounds.size.width

#define Height_StatusBar [[UIApplication sharedApplication] statusBarFrame].size.height
#define Height_NavBar self.navigationController.navigationBar.frame.size.height

#define Height_TopBar (Height_StatusBar+Height_NavBar)
//适配iPhoneXS  Max,iPhoneXS,iPhoneXR

判断是否为 iPhoneXS Max,iPhoneXS,iPhoneXR,iPhoneX

#define KIsiPhoneX ((int)((SCREEN_HEIGHTL/SCREEN_WIDTHL)*100) == 216)?YES:NO
//判断是否为 iPhoneXS  Max,iPhoneXS,iPhoneXR,iPhoneX

我是根据 iPhoneXS Max,iPhoneXS,iPhoneXR,iPhoneX 的宽高比近似做的判断。

    //XSM SCREEN_HEIGHTL = 896.000000,SCREEN_WIDTHL = 414.000000 2.1642512077
    //XS  SCREEN_HEIGHTL = 812.000000,SCREEN_WIDTHL = 375.000000  2.1653333333
    //XR  SCREEN_HEIGHTL = 896.000000,SCREEN_WIDTHL = 414.000000  2.1642512077
    
    NSLog(@"SCREEN_HEIGHTL = %f,SCREEN_WIDTHL = %f",SCREEN_HEIGHTL,SCREEN_WIDTHL);
    NSLog(@"%d",(int)((SCREEN_HEIGHTL/SCREEN_WIDTHL)*100));
    if ((int)((SCREEN_HEIGHTL/SCREEN_WIDTHL)*100) == 216) {
        NSLog(@"YES,we can use it!");
    }else{
        NSLog(@"NO,we can`t use it!");
    }

相关文章

网友评论

  • eb9f7bec7caf:Height_TopBar 的定义是不是有点问题?X 系列的高度应该都是 (44 + 44) 也就是 84 的,非 X 系列应该是就是 64,但是按照你现在的来算的话分别是:132 和 84,Height_TopBar 的正确的应该是 #define Height_TopBar (Height_StatusBar + Height_NavContentBar)
    另外,建议再加一个 X 系列底部的 34 高度的宏
    曹波波:我弄错了,Height_NavContentBar 这个我直接去掉吧
    已经改成下面这种写法
    #define Height_StatusBar [[UIApplication sharedApplication] statusBarFrame].size.height
    #define Height_NavBar 44.0f
    #define Height_TopBar (Height_StatusBar + Height_NavBar)
    曹波波:@DearLatteCat 谢谢
  • 我本善良:旋转横屏之后 [[UIApplication sharedApplication] statusBarFrame].size.height 的高度就为0 了
  • vision_colion:判断iPhone X,XR,XS,XSMAX 这样写感觉要好点:
    #define iPhoneX (([[UIApplication sharedApplication] statusBarFrame].size.height == 44.0f) ? (YES):(NO))
    Eternal_Love:我认为不太好,既然作者用屏幕比例判断来做宏,说明用到这个宏的地方是需要知道具体的屏幕比例是否是2.16。如果苹果后续再出一款新手机,状态栏高度依旧是44,但比例和iPhone X系列不同,这样写就有问题。
    vision_colion:@流云_i0S 不会的
    63e9f5254afd:[[UIApplication sharedApplication] statusBarFrame].size.height在隐藏导航栏的情况下会产出影响吗
  • 属鱼的加菲猫:这个方法目前来看没有问题,就是不兼容以后机型
    曹波波:@跬步千里_LenSky 你的VC是什么类型的,你这个我第一反应是不是 Under top bar 的问题
    跬步千里_LenSky:我是将有导航的设置为不透明让他自动下沉,但是没导航的还是个问题
    曹波波:谢谢,有更好的方法可以分享一下,这只是一个思路

本文标题:iOS 适配iPhoneXS Max,iPhoneXS,iPh

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