今天我拿着我的iphonexsmax X看了一下时间,品管说你还用苹果手机啊,旁边的那个人说人家是有钱人,

拿iphonexsmax6竖屏情况下为例iOS11中返回的safeAreaInsets为(00,00);iOS12中返回的safeAreaInsets为(20,00,0);是的这个top-20是状态栏这里大家要注意下,不应该盲目使用safeAreaInsets而是使用我下面类似的判断刘海屏的方法來区分刘海屏后再决定是否使用safeAreaInsets;

今年的三款新手机已经发布,加上Xcode10已经发布GM Seed版本也可以使用模拟器对新机进行适配,所以赶紧开始吧!


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


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

当我们在XR的模拟器直接跑之前的老项目(已经适配过iphonexsmaxX),做如下打印你会发现:

WTF?难道是Xcode10的bug再试试XS Max我相信你会得到一样的结果。

这里解释下你是否还记得iphonexsmaxX刚出來的时候跑没有适配过的项目,会导致app打开屏幕上下各有几十像素的黑屏原因是因为没有假如iphonexsmaxX的启动页!同理我们需要先引入启动页。


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

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

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

启动页添之后再做打印,就会的到正确的屏幕尺寸了!


由于从iOS11开始引入了safeAreaInsets这个应该是老话题了所以这里稍微提供下我自己的心得吧。

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


这样写除了使用方便以外,还避免了一部分关于系统的条件编译等因为safeAreaInsetiOS11才出的.而且在e lse中会返回UIEdgeInsetsZero,使得使用时可以省去一些if-else语句,例如:

中间那个键是不是主菜单键呀

  1. 你嘚时间与日期不是在主菜单界面也许在旁边界面,你左右滑动界面看是不是在旁边

  2. 你把时间与日期这一个窗口小工具从界面移除了你長按桌面,选择窗口小工具打开左右滑动选择时间与日期这个小工具

你对这个回答的评价是?

你对这个回答的评价是

我要回帖

更多关于 iPhone X 的文章

 

随机推荐