iPhoneXs iPhoneXs Max iPhoneXr 界

作者: 风_iOSer | 来源:发表于2018-09-13 14:42 被阅读1669次
    iPhone_2018.png

    由上图可见 iPhoneXs 的屏幕尺寸和去年的iPhoneX是一样的,所以今年不需要做特殊处理。
    主要处理下后面的两款新的尺寸机型:

    去年适配的iPhoneX 的分辨率:2436 * 1125 || pt: 812 * 375
    iPhoneXr的分辨率:1792 * 828 || pt: 896 * 414
    iPhoneXs 的分辨率: 2436 * 1125 || pt: 812 * 375
    iPhoneXs Max 的分辨率:2688 * 1242 || pt: 896 * 414

    导航栏和tabBar的高度是一样的,所以需要在原来判断iPhoneX的基础上增加两种机型.

    //判断是否是ipad
    #define isPad ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
    //判断iPhone4系列
    #define kiPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
    //判断iPhone5系列
    #define kiPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
    //判断iPhone6系列
    #define kiPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
    //判断iphone6+系列
    #define kiPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
    //判断iPhoneX
    #define IS_IPHONE_X ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
    //判断iPHoneXr
    #define IS_IPHONE_Xr ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
    //判断iPhoneXs
    #define IS_IPHONE_Xs ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
    //判断iPhoneXs Max
    #define IS_IPHONE_Xs_Max ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) && !isPad : NO)
    

    navBar和tabBar的判断

    //iPhoneX系列
    #define Height_StatusBar ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ? 44.0 : 20.0)
    #define Height_NavBar ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ? 88.0 : 64.0)
    #define Height_TabBar ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ? 83.0 : 49.0)
    

    相关文章

      网友评论

      • ebay_Happy:好复杂,判断高度 >=X 不就行了
        风_iOSer:@ebay_Happy 简单的UI适配可以这么判断,若是分机型设置字号和布局的话,就要细化一下
      • 社会主义接班人1984:iPhoneX和iPhoneXS的宏是一样的吗???
        风_iOSer:@社会主义接班人1984 是的
      • 凤栖林:iPhone XR和iPhone XS Max都是414*896,但为什么一个6.1寸,一个6.5寸哪
        d7137e6a1411:一个二倍图一个三杯图,逻辑尺寸一样,分辨率不一样
      • 我见你就笑:我把状态栏隐藏了,iPhoneX上都是正常的,xs max 导航的titleview上移被刘海盖住了,有的界面能正常(大多页面都出现偏移的情况),请问是什么情况
        凤栖林:@我见你就笑 你写一个宏,包含所有x系列的机型,就不用分开判断
        我见你就笑:@凤栖林 你的意思是说iPhoneX和xs Max还要区分判断?
        凤栖林:往上偏移了20,max你没判断机型吧
      • 马金星:我想问一下,现在如何判断手机机型为iPhoneXS,XR,MAX?
        指尖猿:#define isIPhoneX (kScreenHeight >= 812.0f)
        一句话
        风_iOSer:文章中有写
      • 这小子:iPhone XR 和 iPhone XS MAX pt值一定是px的倍数吗?
        manger:我用模拟器获取到的是 750,1624
        manger:真快,需要在iPhone Xr 加一个CGSizeEqualToSize(CGSizeMake(750, 1624), [[UIScreen mainScreen] currentMode].size)
        风_iOSer:@这小子1992是的

      本文标题:iPhoneXs iPhoneXs Max iPhoneXr 界

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