• 适配只看三个参数:
    1.渲染像素–屏幕截图的图片尺寸,单位px
    2.逻辑像素–程序员开发所用尺寸,单位pt
    3.倍率–渲染像素/逻辑像素,得到倍数关系。常见倍率@2x,@3x
  • Safe Area(安全区):
    iOS 9以后加入了Safe Area概念,页面内容不能超出安全区(Safe Area),底部区域用于手势进入主屏或切换应用,如果将触发交互行为的按钮放在屏幕的底部,会破坏App操作体验。
  • 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)

iOS适配iPhoneX/XR/XS/XS MAX相关推荐

  1. 移动端适配iphoneX、iPhone XS、iPhone XS Max、iPhone XR方法

    使用mui框架的底部tab栏打包后在iphoneX.iPhone XS.iPhone XS Max.iPhone XR上展示出现问题,底部会被遮挡大半. 效果如下图: 解决方案:获取屏幕大小来写不同的 ...

  2. iOS 【适配iPhone XR/iPhone XS Max】

    启动图 iPhone XR:828px x 1792px iPhone XS Max: 1242px x 2688px LaunchImage中只有iPhone X/iPhone XS 项目中使用La ...

  3. css适配iPhoneX,iPhone XS Max,iPhoneXR,

    一般情况下iPhoneX适配方法有三种 1.viewport-fit:contain <meta name="viewport" content="width=de ...

  4. iOS 适配iPhoneX上下出现黑色区域

    原因: 旧项目中(iPhoneX等新机型还未发布),使用了 LaunchImage作为启动页,而启动页没有iPhone X/XS/XR/X Max图片尺寸,导致出现了有上下黑色区域: 解决办法: 在L ...

  5. iOS适配iPhoneX/iphone11/iphone12 导航栏高度 (刘海屏幕)

    之前适配导航栏高度(刘海屏)是通过设备类型判断,判断设备为x.11或者12 之后,设置导航栏高度为88!但这样有一个缺点,就是要写好多设备类型代码且苹果出一个设备就得加一个判断-- 现在可以通过状态栏 ...

  6. ios 适配iPhonex时可以改变状态栏statusBar的背景颜色

    一.无导航条的情况: 系统默认状态栏的字体颜色为黑色,即UIStatusBarStyle=UIStatusBarStyleDefault,同时背景颜色和self.view.backgroundColo ...

  7. iOS适配iPhoneX上下出现黑色区域

    最近在写swift重构项目,在适配项目的时候出现了下图的情况 大家可以看到我的navigationBar设置为了蓝色,view为白色但是屏幕上下方出现了黑色区域,我一开始以为自己需要给widow添加b ...

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

    // 判断是否为iPhone X 系列 这样写消除了在Xcode10上的警告. #define IPHONE_X \ ({BOOL isPhoneX = NO;\ if (@available(iOS ...

  9. 华为Mate 20 Pro拆解、iPhone XR 拆解、iPhone XS/XS Max拆解

    华为Mate 20 Pro详细拆解: https://www.eet-china.com/news/201811061757.html iPhone XR 拆解总结!(包括各零部件型号与供应商) ht ...

最新文章

  1. Windows组策略完善主机安全整改实战(1)
  2. Spring Boot 2.1 版本变化[翻译]
  3. 维护IBM DB2数据库所应领会的基本常识-8
  4. Qt工作笔记-QTableWidget设置委托(使用QStyledItemDelegate画3只小猪)
  5. 今天项目中遇到一个关于DataGrid的 ItemDataBound自动判断下拉列表默认值绑定问题...
  6. 如何在 Zabbix 执行远程主机的脚本或指令?如何用 Zabbix 监控网站的访问量?
  7. python模板怎么写,Python模板
  8. C#Winform使用Chrome内核WebKitBrowser
  9. CEIWEI CommMonitor 串口监控精灵v12.0 串口过滤;串口监控;Serial port monitor tools
  10. 谷歌大脑提出gMLP:请多多关注MLP
  11. Deeping Learning学习与感悟——《深度学习工程师》_1
  12. 机器人电焊电流电压怎么调_焊电焊电流怎么调节,调多少合适?
  13. 借助winPE手工清除Deep Freeze冰点还原
  14. 怎样进行微信营销才比较好
  15. 场景编程集锦 - 吉米的总统梦想
  16. 江苏转本计算机一级,江苏“专转本”新规:考生需获计算机一级及以上证书
  17. git 查看自己秘钥_git秘钥配置--转
  18. 对谈 | 创新与进化——当开源接受SaaS
  19. Android - Warning:Not annotated parameter overrides @NonNull parameter
  20. NET酒店宾馆客房管理系统源码

热门文章

  1. 水杯倒了!!!我是如何拯救我进水的MacBook Pro的?
  2. oracle将字符串转成数组_Oracle 字符串转数组的函数
  3. JS--撤销恢复,简单的想法。
  4. python 二维数组转一维数组
  5. PC遥控器电路_遥控电路图讲解
  6. QLineEdit 设置输入掩码
  7. java中jquery怎么写_Jquery就是这么简单
  8. Java JDK Unsafe
  9. MFC之学习多边形绘制、阴影模式、多边形填充模式与绘制实心五角星
  10. 计算机教师格言座右铭,适合教师的格言座右铭