美文网首页
IPhoneX 适配

IPhoneX 适配

作者: KKLinJJ | 来源:发表于2018-06-21 18:13 被阅读121次

    屏幕尺寸变化

    • 高度增加了145pt,变成812pt.
    • 屏幕圆角显示,注意至少留10pt边距。
    • 状态栏高度由20pt变成44pt,留意这个距离就能避开“刘海”的尴尬,相应的导航栏以上变化64->88。
    • 底部工具栏需要为home indicator留出34pt边距。
    • 物理分辨率为1125px * 2436px.

    安全区

    image.png image.png

    首先关于适配iPhoneX,适配安全区讲,因为iPhoneX的刘海和底部Home Indicator上滑指示条的存在,所以弄出来一个安全区的概念。这个区域,就是保证我们的内容的在任何时候,尤其是横屏状态下,内容不被遮盖!而且这个安全区是可以自己设置更改的,不过修改了安全区到底是否影响审核,还是需要看苹果时候的审核规则,目前来看,还是老老实实的把内容写到安全区域内为上策~
    参考很多文章,可以这样理解,安全区域是系统提供给开发者如何布局的参考区域,参考这个区域适配会非常简单。当然,你也可以无视这个方法,手动自己适配,这个当然是绝对不推荐的了。

    如何去适配

    • 1、APP启动图适配
    • 2、APP内部样式适配
    • 3、导航栏和tabbar适配
    • APP启动图适配

    相信有一部分道友的APP在iPhone X上运行时并没有像想象中那样占满整个屏幕, 而是保持着原有的高度 在屏幕中心位置, 针对这个问题 目前经过实验得出可以通过以下方式使APP按照全屏模式运行:
    1.通过LaunchScreen.storyboard方式启动
    2.如果使用的是Assets中的LaunchImage, 在增加了iPhone X尺寸的图片配置后.
    LaunchScreen.storyboard方式不用多说, 这里说一下如何在LaunchImage中增加iPhone X尺寸的图片配置.
    准备一张尺寸:1125 * 2436的启动图片, 移动到LaunchImage的Finder目录中, 并在LaunchImage中的Contents.json文件中增加 (注意Json格式)

    {
        "extent" : "full-screen",
        "idiom" : "iphone",
        "subtype" : "2436h",
        "filename" : "图片名.png",
        "minimum-system-version" : "11.0",
        "orientation" : "portrait",
        "scale" : "3x"
    }
    
    • APP内部样式适配

    滚动条高度跳动、上下拉刷新问题

    self.tableView.estimatedRowHeight = 0;
    self.tableView.estimatedSectionHeaderHeight = 0;
    self.tableView.estimatedSectionFooterHeight = 0;
    

    列表/页面偏移

    //设置工程中的UITableView、UICollectionView、UIScrollView的contentInsetAdjustmentBehavior属性,如下
    if (@available(iOS 11.0, *)){
            _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
        }
    //由于UIView及其子类都遵循UIAppearance协议,我们可以进行全局配置:
    // AppDelegate 进行全局设置
        if (@available(iOS 11.0, *)){
            [[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
        }
    
    • 导航栏和tabbar适配

    iOS11前导航栏的高度是64,其中statusBar的高度为20,而iPhoneX的statusBar高度变为了44,如果是自定义的NaviBar,这部分需要做相应的适配。
    iPhoneX的底部增加了虚拟Home区,由于安全区域的原因默认tabBar的高度由49变为83,增高了34,所以自定义的底部TabBar也需要需改其适配方案。
    iPhone X 变化最大的是头部 & 底部
    非iPhone X :
    StatusBar 高20pt,NavigationBar 高44pt,底部TabBar高49pt
    iPhone X:
    StatusBar 高44pt,NavigationBar 高44pt,底部TabBar高83pt
    所以,之前项目里写死的 ±49 ±64 都要出问题,如果你之前抽离出来使用的是宏,那问题不大,如果不是,开始搬砖吧少年。

    导航栏-状态栏适配参考图.png

    项目适配主要关注点

    1.项目中所有涉及到布局的地方使用宏来适配(避免使用64、88、44、34、、等一些具体数字来布局),便于全局适配和管理
    2.控制器中使用自定义导航栏,导航栏背景View高度=状态栏+导航栏高度,自定义导航栏中子控件布局一般在状态栏下方,即应在系统导航栏所在的区域内布局
    3.控制器中自定义底部工具栏,工具栏背景View高度=工具栏高度+底部虚拟home区高度,自定义工具栏子控件布局一般在底部虚拟home区上,即系统工具栏子控件所在位置
    4.横屏状态下,一般可触发按钮在安全区域内
    5.关注app中上拉下拉弹框和页面UI布局问题

    参考文档

    http://fighting300.com/2017/09/14/iOS11-UI-adjust/
    https://www.jianshu.com/p/94d3fdc0f20d
    https://www.jianshu.com/p/52135c5f144e

    相关文章

      网友评论

          本文标题:IPhoneX 适配

          本文链接:https://www.haomeiwen.com/subject/zzmeeftx.html