iOS12适配适配iPhone XR/iPhone XS Max
iOS 12系统目前看来并没有多大变化.不像iOS 11那样增加了新的安全区域概念.在iOS 12中新机型的安全区域概念没有太大变化.
主要就是机型的适配和Xcode10升级后的问题.
首先附上iOS 12支持的所有机型的尺寸.
适配iPhone XR/iPhone XS Max
升级Xcode10后,打印屏幕的宽高:
会发现无论是iPhone XS Max还是iPhone XR,打印出来的尺寸高度都是812,这是iPhone X的高度.与真实的新机尺寸不符.
LaunchImage中只有iPhone X/iPhone XS
这可能是Xcode的bug.
项目中使用LaunchImage来做启动图,但是在LaunchImage中并没有iPhone XS Max和iPhone XR,仔细查找后是因为iOS 8.0 and Later
没有被选中,当选中iOS 8.0 and Later
后,iPhone XR和iPhone XS Max的启动图就会自动出现.
如图:
选中后会自动出现.如图:
iPhone XS Max和iPhone XR的兼容问题
这主要是因为没有设置iPhone XR/iPhone XS Max启动图,但是设置了iPhone X启动图,iPhone XR/iPhone XS Max启动的时候会使用iPhone X的启动图,并进行拉伸,进而打印出的宽度为375
,高度为812
,与实际宽高不符.
解决方法:只需要向设计要2张启动图即可:
iPhone XR:828px x 1792px
iPhone XS Max: 1242px x 2688px
2.iPhone XR不支持3D-Touch:
最新的机型iPhone XR是iPhone XS的阉割版,去除了很多功能,手机配置也降低了很多.其中就有3D-Touch.
当使用3D-Touch的时候,如果需要检测是否支持3D-Touch,使用如下代码:
OC:
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {}
Swift:
self.traitCollection.forceTouchCapability == .availible
备注:不能使用判断手机是否为6S或6SP等来判断是否支持3D-Touch,因为如果用户在设置 -> 通用 -> 3D Touch中将该功能关闭的话,同样forceTouch是不可用的. 而且此功能必须在运行时随时检查.因为用户可能在使用过程中关闭3D-Touch.
3.代码中判断是否是iPhone X方法
之前很多人判断手机是否是iPhone X的方法是根据手机尺寸来的.因为需要对刘海做特殊处理.现在这种方法可能不行了.
可以根据其他的方法,比如StatusBar或者底部安全距离来判断.
#define rmStatusBarH ([UIApplication sharedApplication].statusBarFrame.size.height)//(44/20)
#define KIsiPhoneX ((rmStatusBarH == 44.0) ? YES : NO)
也可以:
#define isIPhoneXSeries ([UIScreen instancesRespondToSelector:@selector(currentMode)] ?\
(\
CGSizeEqualToSize(CGSizeMake(375, 812),[UIScreen mainScreen].bounds.size)\
||\
CGSizeEqualToSize(CGSizeMake(414, 896),[UIScreen mainScreen].bounds.size)\
)\
:\
NO)
4.升级Xcode10后项目报错
项目中如果使用Cocoapods引用了第三方的库,有可能会升级之后导致编译失败.
由于我项目中没有使用cocoapods,所以没有遇到,网上查了一下资料,大概是因为:
- iOS 12移除了libstdc++, 用libc++替代:
- 多个 info.plist 会引起崩溃.
可以将多余的info.plist删除
建议方案:
Xcode->File->Project Settings-> Build System -> Legacy Build System.
//获得屏幕的宽高
#define kScreenWidth ([UIScreen mainScreen].bounds.size.width)
#define kScreenHeight ([UIScreen mainScreen].bounds.size.height)
//iPhoneX / iPhoneXS
#define isIphoneX_XS (kScreenWidth == 375.f && kScreenHeight == 812.f ? YES : NO)
//iPhoneXR / iPhoneXSMax
#define isIphoneXR_XSMax (kScreenWidth == 414.f && kScreenHeight == 896.f ? YES : NO)
//异性全面屏
#define isFullScreen (isIphoneX_XS || isIphoneXR_XSMax)
// Status bar height.
#define StatusBarHeight (isFullScreen ? 44.f : 20.f)
// Navigation bar height.
#define NavigationBarHeight 44.f
// Tabbar height.
#define TabbarHeight (isFullScreen ? (49.f+34.f) : 49.f)
// Tabbar safe bottom margin.
#define TabbarSafeBottomMargin (isFullScreen ? 34.f : 0.f)
// Status bar & navigation bar height.
#define StatusBarAndNavigationBarHeight (isFullScreen ? 88.f : 64.f)
判断是不是异性全面屏幕
#define isFullScreen (isIphoneX_XS || isIphoneXR_XSMax)
是在适配iPhoneX的基础上加的判断,OK打完收工!
iOS12适配适配iPhone XR/iPhone XS Max相关推荐
- iOS 【适配iPhone XR/iPhone XS Max】
启动图 iPhone XR:828px x 1792px iPhone XS Max: 1242px x 2688px LaunchImage中只有iPhone X/iPhone XS 项目中使用La ...
- H5移动端网页适配iPhone x/iPhone xr/iPhone 11pro/iPhone 11/iPhone 12 机型底部小黑条
iPhone x/iPhone xr/iPhone 11pro/iPhone 11/iPhone 12 取消了物理按键,改成底部小黑条,这一改动导致网页出现了比较尴尬的屏幕适配问题.对于网页而言,顶部 ...
- 如何激活iPhone XR和XS上的eSIM
原文https://appletoolbox.com/2018/10/how-to-use-dual-sim-and-esim-on-iphone-xr-and-xs/#How_To_Set-Up_e ...
- iOS屏幕适配 支持新手机 iPhone XR iPhone XS 超简单
随着苹果爸爸发布了 超牛叉的iPhone iPhone X .iPhone XR.iPhone XS .iPhone XS Max.开发者的适配工作要开始了. 停,?. 如果app 适配过 iPhon ...
- 超简单 iOS屏幕适配 支持新手机 iPhone XR iPhone XS
随着苹果爸爸发布了 超牛叉的iPhone iPhone X .iPhone XR.iPhone XS .iPhone XS Max.开发者的适配工作要开始了. 停,?. 如果app 适配过 iPhon ...
- iphone xr xs_如何在iPhone X,XR,XS和XS Max上截屏
iphone xr xs With the arrival of the iPhone X and its lack of a Home button, Apple had to change the ...
- iphone xr xs_等等,是iPhone“ XS”还是iPhone“ Xs”?
iphone xr xs Apple just announced a trio of new phones with pretty silly names. On top of being kind ...
- 真有那么大差距?— iPhone XR 屏幕素质报告
iPhone XR 与今年的旗舰 iPhone XS 系列不一样,没有采用Apple 官方称之为:「超视网膜高清显示屏」的新一代 OLED 屏幕,而是选择了被称为 Liquid 视网膜显示屏的 LCD ...
- iOS-12 iPhone XS Max 和iPhone XR新屏幕简单适配方式
在新的机器发布之后,我们需要对更大的刘海屏幕做适配,以下是需要新适配的机型: 型号 逻辑尺寸 系数 分辨率 iPhone XR 414pt * 896pt @2 828px * 1792px iPho ...
- 支持Xcode10和适配iPhone XS Max、iPhone XR的方法
这篇文章主要介绍了支持Xcode10和适配iPhone XS Max.iPhone XR的方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着 ...
最新文章
- 为安装创建软链接,迁移文件夹
- linux 终端 朗读,使Linux终端朗读文字的小技巧分享
- 鸿蒙adb调试权限,真机ro.debuggable全局调试权限修改为1(Nexus 6为例)
- leetcode 85 python
- 【STM32】初识STM32(型号+封装+内核+储存器+时钟、复位和电源管理+工作模式+ADC)
- RecyclerView实现滑动删除和拖拽功能
- 我的成长笔记20210325(一天写了247条用例)
- idea新建web项目并配置运行教程
- php实现语音留言,iPhone实现语音留言 新技能get
- Windows下部署安装Docker
- WCF生成的json与Extjs交互的日期型问题
- python tornade 表单和模板
- ad域管理与维护_自动化清理AD域中非活动用户
- 从0开始学心电信号处理(1)——心电信号的读取
- 华为服务器安装操作系统
- 计算机保研面试知识点,保研面试(附面试笔试机试)
- apache 的配置文件hthp.conf里边都是什么意思?
- Landsat8遥感影像批量分割(Arcmap实现)
- unity导入模型呈现紫色解决方法
- 将文本文件导入到mysql,hive数据库中
热门文章
- matlab加分号,matlab加分号
- 信息安全中最容易被忽略的软资产管理
- 北京市海淀区土地利用总体规划(2006-2020)(zz.is2120.BG57IV3)
- 图文排版html,超漂亮的网页图文排版欣赏
- try catch 的使用
- 给大家总结的一份白帽子成长进阶指南(内附学习资源)
- 中缀/后缀/前缀表达式及相互转换的手算详细步骤及C代码实现
- tk域名管理后台_Freenom免费域名.TK、.CF、.ML、.GA注册及使用方法
- html批量转换ppt,将ppt批量转换成图片(一张幻灯片转成一张图片)
- 组播源发现协议-MSDP