iOS适配iPhoneX/XR/XS/XS MAX

news/2024/11/25 11:59:56/
  • 适配只看三个参数:
    1.渲染像素–屏幕截图的图片尺寸,单位px
    2.逻辑像素–程序员开发所用尺寸,单位pt
    3.倍率–渲染像素/逻辑像素,得到倍数关系。常见倍率@2x,@3x
  • Safe Area(安全区):
    iOS 9以后加入了Safe Area概念,页面内容不能超出安全区(Safe Area),底部区域用于手势进入主屏或切换应用,如果将触发交互行为的按钮放在屏幕的底部,会破坏App操作体验。
    Safe Area
  • iPhoneX和XR/XS/XS MAX安全区计算方式相同:
    在这里插入图片描述
  • 常用宏:
// 判断是否是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)
//状态栏高度
#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)
//TabBar高度
#define Height_TabBar ((IS_IPHONE_X == YES || IS_IPHONE_Xr == YES || IS_IPHONE_Xs == YES || IS_IPHONE_Xs_Max == YES) ? 83.0 : 49.0)
//底部安全距离
#define TabbarSafeBottomMargin ((IS_IPHONE_X == YES || IS_IPHONE_Xr == YES || IS_IPHONE_Xs == YES || IS_IPHONE_Xs_Max == YES) ? 34.f : 0.f)

http://www.ppmy.cn/news/196992.html

相关文章

iOS 判断机型是否为 iPhone X、XR、XS、XS Max 的方法

// 判断是否为iPhone X 系列 这样写消除了在Xcode10上的警告。 #define IPHONE_X \ ({BOOL isPhoneX NO;\ if (available(iOS 11.0, *)) {\ isPhoneX [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom > 0.0;\ }\ (isPhoneX);}) 原理是根据手…

iOS 对iPhone X XS XR XS MAX适配

勇~敢~的小伙伴儿们,你们好,其实我本来不打算写关于iPhone X的适配的,虽然我已经做好了我们App对于iPhone X的适配,但是真的觉的很鸡肋,可是iPhone X的真机我在前几天感受了一下,发现终究是逃不了适配这条路…

适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域

此篇文章是对上一篇文章(http://www.ifiero.com/index.php/archives/611)的进一步补充,主要说明如何适配Apple的最新三款手机iPhoneXs、iPhoneXs Max及iPhoneXr !!! 未适配前:Ball球超过屏幕的上下方 适配后:Ball球就在屏幕的可视范围内运动了…

苹果x和xs买哪个好_iPhone XS和iPhone XR买哪个好?苹果XR和XS区别对比测评

iPhone XS和iPhone XR哪个好?苹果XR和XS区别对比测评。iPhone XR、iPhone XS和iPhone XS Max三款苹果新机己于今日过了近半年时间,可以说在iPhone还没有发布时,就有不少在关注。所以今天就有网友问小编iPhone XS和iPhone XR哪个好&#xff1f…

iPhone X,iPhone XS,iPhone XR,iPHone XS Max 适配(只说实现,不BB)

今天凌晨苹果新发布了三款手机,分别是iPhone XS,iPhone XR,iPhone XS Max,其中iPhone XS的屏幕尺寸和iPhone X的是一致的,另外两款都有了新的尺寸,具体尺寸如下 具体原理性的东西就多说了,因为i…

iPhone XR/XS/XS Max 适配,最全iPhone尺寸

iPhone 比较 https://www.apple.com/iphone/compare/

iPhoneXS、XS Max与iPhoneXR 适配

刚发布的三款新iPhone包括两款OLED屏幕的iPhone XS和iPhone XS Max,屏幕尺寸分别为5.8英寸(分辨率为1125*2436)和6.5英寸(分辨率为1242*2688),第三款设备是iPhone XR,配备6.1英寸LCD液晶屏&…

iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配

上图为先苹果所有设备屏幕尺寸,可以看到最新的iPhoneXS和去年的iPhoneX尺寸一样,iPhoneXR和iPhoneXSMax屏幕尺寸一样,不一样的是iPhoneXR为2先倍图,图片这些不用管,只要名字后缀命名好就行。 今年当苹果发布新手机前&a…