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适配可以这么判断,若是分机型设置字号和布局的话,就要细化一下
  • 8c1b37b494f6: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