iOS新机 iPhoneXS max和iPhoneXR适配
三款手机的屏幕大小
上面是像素单位,然后我们找到对应的倍数,换算成-点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
,然后删除老的LaunchImag
e,记得新建的文件夹要改名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适配相关推荐
- iOS 判断 iPhoneXS Max、iPhoneXS、iPhoneXR、iPhoneX
iPhoneX 的分辨率:2436 * 1125 || pt: 812 * 375 iPhoneXr的分辨率:1792 * 828 || pt: 896 * 414 iPhoneXs 的分辨率: 24 ...
- iOS开发:判断iPhone是否是刘海屏iPhoneX、iPhoneXR、iPhoneXs、iPhoneXs Max等
保证能判断,呕心沥血,不行切JIJI 方法一 Objective-C // iPhoneX.iPhoneXR.iPhoneXs.iPhoneXs Max等 // 判断刘海屏,返回YES表示是刘海屏 - ...
- Unity判断机型是否为iPhoneX,iPhoneXS,iPhoneXR,以及iPhoneXS Max
原生iOS常用的判断方法 iOS中判断机型的方式通常是利用屏幕分辨率,导航栏尺寸,是否支持某些功能特性等进行判断. 例如获取屏幕宽高: CGFloat screenWidth = [UIScreen ...
- iOS 屏幕尺寸、分辨率、适配
1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS ...
- iOS 屏幕尺寸、分辨率、适配、UI规范
.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS 2 ...
- IOS开发基础之屏幕组件适配添加约束
IOS开发基础之屏幕组件适配添加约束 使得横屏显示也能自动适配 对齐我们可以按住Ctrl键,把控件连线至view中 如果我们不小心添加错了.可以清除掉约束 具体约束可以在右边查看 by johnson ...
- html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)
原帖地址:http://blog.csdn.net/phunxm/article/details/42174937/ 仅供我个人收藏学习,原博主如不同意请联系qq651263878进行删除,在此表示感 ...
- iOS开发之#iPhone6与iPhone6Plus适配#Xcode6.0/Xcode6.1上传应用过程中一些变动以及#解决方案#
iOS开发之#iPhone6与iPhone6Plus适配#Xcode6.0/Xcode6.1上传应用过程中一些变动以及#解决方案# 参考文章: (1)iOS开发之#iPhone6与iPhone6Plu ...
- 58 同城 iOS 客户端 iOS11 及 iPhone X 适配实践
一.前言 前段时间 WWDC 大会上苹果推出了 iOS11 系统 和 iPhone X 新机型,相信各个 iOS 团队的开发者都已经在计划新系统和新机型的适配工作了.不得不说,新系统和新机型的发布确实 ...
- android+m3+max,魅族巨屏新机魅蓝Max跑分曝光:联发科P10处理器+3GB运存
IT之家讯 9月1日消息,魅族将在9月5日14:30举行新品发布会,届时魅族大屏新机魅蓝Max将发布.关于魅蓝Max,此前消息显示该机拥有32GB/64GB两种配置可选,首发联发科Helio P20处 ...
最新文章
- 谷歌编程语言年度榜NO.1:知识体系总结(2021版)
- php mssql_result 255 string,PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
- Ansible中的变量及加密
- matlab计算联合熵,如何用matlab软件计算一幅图像信息的熵以及两幅图像间的联合熵?...
- Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?...
- gdb x命令_gdb基本命令
- python 读取excel太慢_实用技巧——Python实现从Excel读取数据并绘制成图像
- 技术帝出没:对做梦推的强力回复们
- 常见WA错误总结(待更)
- 判断图书的ISBN号码是否正确
- 如何一行代码安装ROS|2022最新版|一行代码安装ROS2|一行代码解决rosdep|一行代码配置多ROS环境
- 彻底解决连上了网却不能上网问题:未连接到互联网
- 如何进行有效的大数据处理、分析?
- 机器学习之路(四)之感知机算法PLA
- vue横向的table表格
- linux jq 数组,linux shell脚本 用jq命令在JSON文件肿添加一个map或数组
- mysql中sql插入时间_mysql中使用sql语句插入日期时间类型的写法
- 论文笔记(十二):Particle Filter Networks: End-to-End Probabilistic Localization From Visual Observations
- 将项目同时托管到Github和Git@OSC
- 硬汉也有软柔情 浪潮软实力大揭秘