一,想必大多开发者将自己的项目跑到iPhoneX模拟器上后,会出现各种异常,包括界面布局的变化,根据自己遇到的情况主要说下面两点大家肯定需要修改的:

(1),启动页不是全屏的,(如图)

解决办法

  1. 如果使用的是LaunchImage方式启动图的话,直接在iOS8.0 and later 下面portrait打钩,就会出现iphoneX的启动图(如图)
    将美术做好的图片拖进去就好了,大小是:1125x2436-(375x812)*3
    这里请参考海边来的设计师
  2. 如果使用的是LaunchScreen.storyboard适配启动图的话,就更简单了,找一张像素合适的图放进去做好适配就可以了(这个地方怎么适配的就不做说明了,如有疑问可以联系我哦)。
  3. 经过适配启动图变为:
(2),启动后,软件界面也是不会填充完整的,(如图)
  1. 既然启动图的适配已经解决了,那么软件界面自然就会呗填充满了

二,我将上图的tabBar和导航条都给隐藏掉,结果就是全屏显示,是不是很爽,然而,这样的做法是不对的,下面就一张图说明所有

  1. 只要将标红的地方注意了,并且设计的时候避开这个地方就不会出现什么问题
  2. 具体说明:怎么避开上下的危险区域呢,其实苹果官方已经给出了一个新的类,
- (void)viewSafeAreaInsetsDidChange NS_REQUIRES_SUPER API_AVAILABLE(ios(11.0), tvos(11.0));

具体代码就是在需要的controller里面写入即可,一般是在基类里面做好处理

 - (void)viewSafeAreaInsetsDidChange {// 补充:顶部的危险区域就是距离刘海10points,(状态栏不隐藏)// 也可以不写,系统默认是UIEdgeInsetsMake(10, 0, 34, 0);[super viewSafeAreaInsetsDidChange];self.additionalSafeAreaInsets = UIEdgeInsetsMake(10, 0, 34, 0);
}

三,代码里面到底怎么做呢?

  1. 如果将页面滑到最顶部和最底部,会发现上下会留出10和34points的区域,如图:
    顶部区域

    底部区域

  2. 在滑动的过程中满屏的,是不是感觉比较舒服

  3. 其实我感觉,官方说的危险区域到底要不要避开呢,这个就比较蛋疼了,如果要避开的话那么在滑动的时候就不应该是满屏跑呀?如果说是不避开,那么在滑到顶部和底部的时候,给我留的空白是干啥的?谁知道可以解释一下,谢谢!
  4. 我的做法是上下全留白,不管是在滑动还是在最顶部和最底部,如图底部绿色部分就是危险区域,一直是空白的(我的项目里面是有导航的,所以上面的留白就不展示了在这)。就是这样做会不会有点不美观,大家给给意见,谢谢!
  5. 其实,如果在碰到底部有自定义的bar时,就最好按照上面4点的做法,如图实现的三种方式其中的参数具体是:
    iphoneX下,底部的tabBar高度是83,其中危险区域有34
    顶部导航栏的高度还是44,只不过状态栏变为44了

    6,我的做法是在基类里面写一个算高度的类:
- (CGFloat)calculateHeight:(CartOnePageSource)source {// 针对上图第三张的展示方式,如要改变,就可以在这里变就可以了// source : // CartOnePageSourceNormal 表示是有底部tabBar的// CartOnePageSourceDetial 表示没有底部tabBar的CGFloat height = 0;if (iPhoneX) {height = (source == CartOnePageSourceNormal)?(kScreenHeight - 88 - 83) : (kScreenHeight - 88 - 34);}else {height = (source == CartOnePageSourceNormal)?(kScreenHeight - 64 - 49) : (kScreenHeight - 64);}return height;
}

四,iOS11适配

  1. 具体tableView的contentSize的限制如下,除了self.extendedLayoutIncludesOpaqueBars = NO;外其他两个都是系统默认的,其实不写也是不影响布局的,但是,在使用的过程中就会出现问题。
self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = NO;
if (@available(iOS 11.0, *)) {                  self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {self.automaticallyAdjustsScrollViewInsets = NO;
}
  1. 具体问题:pop会上一页面,界面会从下往上滑动;
    利用MJRefresh刷新界面,会出现跳动,
    经测试,这两个问题都是因为没写或是将contentInsetAdjustmentBehavior设置为了UIScrollViewContentInsetAdjustmentAutomatic.

3.在需要的地方设置这三句话,可以在基类里面写好,这样有助复用

self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = NO;
if (@available(iOS 11.0, *)) {                  self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {self.automaticallyAdjustsScrollViewInsets = NO;
}

参考:

http://blog.csdn.net/chenyblog/article/details/77987751
http://www.qingpingshan.com/m/view.php?aid=331302
http://www.ui.cn/detail/283956.html

iphoneX布局适配及iOS 11.0系统适配相关推荐

  1. iOS 采用@available(iOS 11.0, *)适配 iOS11,会引起调用系统相册时,系统界面上移问题

    我们在使用以下方法适配 iOS11,避免滚动视图顶部出现20的空白以及push或者pop的时候页面有一个上移或者下移的异常动画的问题时,会导致一个问题,就是当我们的应用调用系统相册时,引起系统相册界面 ...

  2. 华为升级harmonyos的机型名单,华为鸿蒙 OS 2.0 系统适配名单已出,四月推送,天玑机型暂时无缘...

    原标题:华为鸿蒙 OS 2.0 系统适配名单已出,四月推送,天玑机型暂时无缘 华为官方在 2020 年发布了旗下自研系统"HarmonyOS 2.0"版本,发布会现场展示了 Har ...

  3. 升级鸿蒙系统数据备份,鸿蒙系统手机怎么回退到稳定版的EMUI 11.0系统?鸿蒙系统回退到EMUI系统详细教程...

    鸿蒙系统手机怎么回退到稳定版的EMUI 11.0系统?许多用户在使用了华为的鸿蒙系统后,多少多遇到了各种问题,而且对于用户来说,只是体验一下,并不是一直使用.下面小编就带着大家一起看看详细的操作方法吧 ...

  4. iOS 11 安全区域适配总结

    2019独角兽企业重金招聘Python工程师标准>>> 导语:本文主要是对iOS 11下APP中tableView内容下移20pt或下移64pt的问题适配的一个总结.内容包括五个部分 ...

  5. 小米6系统 Android版本,追赶华为! 小米开启安卓8.0系统适配, 小米6最先更新!

    说起买手机,你可能会注意些什么呢?很多人会首先看手机的外观.配置或者价格等等,相信肯定也有一部分是冲着系统去了.比如说小米,之所以能够大卖,不仅仅是因为性价比,同样也因为它的MIUI系统,这也应该是目 ...

  6. iOS 12.0+系统录屏(一)

    iOS在录屏功能是走过了长长的一段路,在其他平台尤其是直播平台日益火爆的推动下,iOS12.0终于开放在应用中唤起系统录屏权限给开发者.以下内容以iOS 12.0+为基础,不再讨论之前的版本. 理论准 ...

  7. Android 11.0 系统去掉多用户功能

    1.概述 在11.0的系统产品开发中,对于系统原生是有多用户功能的,但是产品开发需求要求去掉多用户功能,systemui和Settings中的多用户功能都要求去掉,所以就需要找到系统关于多用户的地方去 ...

  8. 华为鸿蒙系统支持什么手机_鸿蒙os2.0系统适配机型有哪些_华为鸿蒙系统支持的手机型号...

    据相关媒体报道,鸿蒙OS 2.0的手机开发者Beta版可兼容运行安卓应用,那么这么多的手机厂商还能做的住吗?现场体验来看,鸿蒙os2.0系统在UI设计上和安卓相似,更加贴合用户习惯. 贴合安卓用户使用 ...

  9. 小米5s plus android8,小米:正加速小米5s/5s Plus机型安卓8.0系统适配

    ­ 近日,IT之家从微博.小米社区及其他网络论坛了解到,因为小米5s和小米5s Plus机型升级安卓8.0系统的问题,许多用户对于小米的做法都感到不满意,而雷军的微博下更是被5s评论刷屏. ­ 对于小 ...

最新文章

  1. 华为机考HJ2计算字符个数
  2. 分布式文件系统Fastdfs 详细安装笔记
  3. 进程间的通信方式(二):管道Pipe和命令管道FIFO
  4. linux diff命令_Linux diff命令示例
  5. torch.randn【返回从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数】
  6. 访问权限修饰符( public,protected,default,private )的使用对象和作用域
  7. 万万没想到!ModelArts与AppCube组CP了
  8. 从总数中生成一定数量的随机数
  9. [MAC 苹果电脑] [Linux 系统] ”苹果电脑使用虚拟机安装 Linux Ubuntu系统”教程
  10. H3C WA4320H-ACN 无线AP硬改支持集客256M内存启动
  11. 小米电视联网后显示无法解析小米电视服务器,小米电视连上无线不能上网怎么回事?教你解决办法...
  12. ERD Online 4.0.0新版本震撼来袭,超强国产免费在线数据建模系统
  13. 微信小程序 渲染层网络错误_渲染层网络层错误 微信小程序开发 - 云计算资讯 - 服务器之家...
  14. 短信或者邮件链接打开 APP(URL Scheme)
  15. cocos2dx点击按钮更改按钮图片
  16. 苹果公司独有的“产品包装艺术”
  17. OpenCV Java入门五 结合摄像头识脸和拍照
  18. 软件测试Bug评测 之Serverity(严重程度)、Priority(优先级)
  19. 关于java.lang.OutOfMemoryError:GC overhead limit exceeded异常解决方法
  20. 法规标准-UN R158标准解读

热门文章

  1. SpringCloud学习一
  2. 视频号哪些领域值得做变现机会更大:国仁楠哥
  3. 推荐9个大气美观的前后端分离项目:前端react,vue,ts,ElementUI,Angular等,后端mysql,springBoot,myBatis,springSecurity,cloud等
  4. 网站搭建需要什么技术?
  5. 计算机专业保研英语自我介绍,计算机专业保研面试英文自我介绍
  6. 汽车计算机控制的电路有哪些特点,在电磁继电器工作电路中的电压和电流比起控制电路来说一般是...
  7. 算法中的数学基础知识
  8. android 权限整理
  9. CAD的那些装逼技巧!
  10. 麻省理工计算机导论公开课,网易公开课给大一新生“量身订做”精品课程