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 不会的
        流云_i0S:[[UIApplication sharedApplication] statusBarFrame].size.height在隐藏导航栏的情况下会产出影响吗
      • 属鱼的加菲猫:这个方法目前来看没有问题,就是不兼容以后机型
        曹波波:@跬步千里_LenSky 你的VC是什么类型的,你这个我第一反应是不是 Under top bar 的问题
        跬步千里_LenSky:我是将有导航的设置为不透明让他自动下沉,但是没导航的还是个问题
        曹波波:谢谢,有更好的方法可以分享一下,这只是一个思路

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

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