三款手机的屏幕大小

上面是像素单位,然后我们找到对应的倍数,换算成-点pt;

iPhone XS 375812pt*

iPhone XR 414896pt*

iPhone X 414896pt*

总结一下,因为X已经都是陪过了XS基本上就是忽略不管了,而新出的XR和XS Max虽然屏幕像素不同(一个LCD屏幕一个OLED屏幕)所以一个2x一个3x最终得到的pt大小是一样的(这里可以看出苹果果然没白给你便宜)。加上iOS11开始引入了safeAreaInsets,如果之前使用了这个属性,我们几乎不需要对项目中的页面做调整,那么最后只剩下一部要做 添加两个尺寸的启动图

添加启动图

这是启动图尺寸,直接照着像素单位切图即可。

需要注意的是,当你的老项目用Xcode10打开后,打开Images.xcassets文件夹,再到LaunchImage文件夹下时,找不到以上两个新机型的占位框,最简单的办法就是右键添加一个新的LaunchImage,然后删除老的LaunchImage,记得新建的文件夹要改名LaunchImage。

新建的LaunchImage会出现两个新机型的占位框:

页面适配

页面适配经常要写个中判断,代码中时常需要用到safeAreaInsets或者判断刘海屏等工具,所以我习惯在项目中写一个UIManager的单例,这里面除了提供一些适配需要的属性,还可以写一下tableView适配等。

@interface DDUIManager : NSObject@property (nonatomic, assign, readonly) UIEdgeInsets safeAreaInset;
/** 是否是刘海屏* */
@property (nonatomic, assign, readonly) BOOL isHairHead;+ (instancetype)sharedManager;@end
@implementation DDUIManager- (UIWindow *)keyWindow {return [UIApplication sharedApplication].keyWindow;
}- (UIEdgeInsets)safeAreaInset {if (@available(iOS 11.0, *)) {if (self.keyWindow) {return self.keyWindow.safeAreaInsets;}}return UIEdgeInsetsZero;
}- (BOOL)isHairHead {if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {return self.safeAreaInset.left > 0.0f;}else {// ios12 非刘海屏状态栏 20.0freturn self.safeAreaInset.top > 20.0f;}
}@end

导航条、tabbar高度适配

去年适配的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)

iOS新机 iPhoneXS max和iPhoneXR适配相关推荐

  1. iOS 判断 iPhoneXS Max、iPhoneXS、iPhoneXR、iPhoneX

    iPhoneX 的分辨率:2436 * 1125 || pt: 812 * 375 iPhoneXr的分辨率:1792 * 828 || pt: 896 * 414 iPhoneXs 的分辨率: 24 ...

  2. iOS开发:判断iPhone是否是刘海屏iPhoneX、iPhoneXR、iPhoneXs、iPhoneXs Max等

    保证能判断,呕心沥血,不行切JIJI 方法一 Objective-C // iPhoneX.iPhoneXR.iPhoneXs.iPhoneXs Max等 // 判断刘海屏,返回YES表示是刘海屏 - ...

  3. Unity判断机型是否为iPhoneX,iPhoneXS,iPhoneXR,以及iPhoneXS Max

    原生iOS常用的判断方法 iOS中判断机型的方式通常是利用屏幕分辨率,导航栏尺寸,是否支持某些功能特性等进行判断. 例如获取屏幕宽高: CGFloat screenWidth = [UIScreen ...

  4. iOS 屏幕尺寸、分辨率、适配

    1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS ...

  5. iOS 屏幕尺寸、分辨率、适配、UI规范

    .iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS 2 ...

  6. IOS开发基础之屏幕组件适配添加约束

    IOS开发基础之屏幕组件适配添加约束 使得横屏显示也能自动适配 对齐我们可以按住Ctrl键,把控件连线至view中 如果我们不小心添加错了.可以清除掉约束 具体约束可以在右边查看 by johnson ...

  7. html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)

    原帖地址:http://blog.csdn.net/phunxm/article/details/42174937/ 仅供我个人收藏学习,原博主如不同意请联系qq651263878进行删除,在此表示感 ...

  8. iOS开发之#iPhone6与iPhone6Plus适配#Xcode6.0/Xcode6.1上传应用过程中一些变动以及#解决方案#

    iOS开发之#iPhone6与iPhone6Plus适配#Xcode6.0/Xcode6.1上传应用过程中一些变动以及#解决方案# 参考文章: (1)iOS开发之#iPhone6与iPhone6Plu ...

  9. 58 同城 iOS 客户端 iOS11 及 iPhone X 适配实践

    一.前言 前段时间 WWDC 大会上苹果推出了 iOS11 系统 和 iPhone X 新机型,相信各个 iOS 团队的开发者都已经在计划新系统和新机型的适配工作了.不得不说,新系统和新机型的发布确实 ...

  10. android+m3+max,魅族巨屏新机魅蓝Max跑分曝光:联发科P10处理器+3GB运存

    IT之家讯 9月1日消息,魅族将在9月5日14:30举行新品发布会,届时魅族大屏新机魅蓝Max将发布.关于魅蓝Max,此前消息显示该机拥有32GB/64GB两种配置可选,首发联发科Helio P20处 ...

最新文章

  1. 谷歌编程语言年度榜NO.1:知识体系总结(2021版)
  2. php mssql_result 255 string,PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
  3. Ansible中的变量及加密
  4. matlab计算联合熵,如何用matlab软件计算一幅图像信息的熵以及两幅图像间的联合熵?...
  5. Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?...
  6. gdb x命令_gdb基本命令
  7. python 读取excel太慢_实用技巧——Python实现从Excel读取数据并绘制成图像
  8. 技术帝出没:对做梦推的强力回复们
  9. 常见WA错误总结(待更)
  10. 判断图书的ISBN号码是否正确
  11. 如何一行代码安装ROS|2022最新版|一行代码安装ROS2|一行代码解决rosdep|一行代码配置多ROS环境
  12. 彻底解决连上了网却不能上网问题:未连接到互联网
  13. 如何进行有效的大数据处理、分析?
  14. 机器学习之路(四)之感知机算法PLA
  15. vue横向的table表格
  16. linux jq 数组,linux shell脚本 用jq命令在JSON文件肿添加一个map或数组
  17. mysql中sql插入时间_mysql中使用sql语句插入日期时间类型的写法
  18. 论文笔记(十二):Particle Filter Networks: End-to-End Probabilistic Localization From Visual Observations
  19. 将项目同时托管到Github和Git@OSC
  20. 硬汉也有软柔情 浪潮软实力大揭秘

热门文章

  1. Android音频系统学习二:Android音频框架
  2. 山东理工大学SDUT - ACM OJ 题: Python代码 及分析
  3. HTML排版一首古诗,古诗句排版正确方式
  4. 基于FPGA的DHT11数字温湿度传感器测试
  5. linux运行blast,Linux下BLAST的使用
  6. 计算机网络学习 - 网卡
  7. allegro跨层复制铜皮
  8. (判断题)两台路由器之间转发的数据包一定不携带VLAN TAG?
  9. python 从useragent中获取操作系统版本号以及浏览器的版本信息
  10. 关于Arcgis中的裁剪说明