美文网首页自己尝试等装一下iOS 11 & iPhone X 适配UI适配
iPhone X适配没那么复杂,但也不是看上去这么简单

iPhone X适配没那么复杂,但也不是看上去这么简单

作者: 无名子子辈 | 来源:发表于2017-09-13 16:46 被阅读39131次

    全世界都在转发iPhone X的测评报告和HIG,我可能没有真的看懂...

    iPhone X 搭载了超大,高清晰度,大圆角,无边框的显示屏,又一次刷新了我们对内容优先的沉浸式体验的认识。——任性地翻译自《Human Interface Guiidelines》

    屏幕尺寸


    我们熟知的iphone 系列开发尺寸概要如下:

    图1-1:iPhone各机型的开发尺寸

    转化成我们熟知的像素尺寸:

    图1-2:每个机型的多维度尺寸

    倍图其实就是像素尺寸和开发尺寸的倍率关系,但这只是外在的表现;

    倍图核心的影响因素在于PPI(DPI),了解屏幕密度与各尺寸的关系有助于我们深度理解倍率的概念: 链接:《解读:我们说的倍图@2X @3X到底是什么?为什么?》

    8在本次升级中,屏幕尺寸和分辨率都遗传了iPhone6以后的优良传统;

    然而iPhone X 无论是在屏幕尺寸、分辨率、甚至是形状上都发生了较大的改变,下面以iPhone 8作为参照物,看看到底iPhone X的适配 我们要怎么考虑。

    我们看看iPhone X尺寸上的变化:

    图1-3:iPhone 8与X 开发尺寸比对

    开发尺寸上可以发现X和8的宽度一致,然而在垂直方向上多了145 pt,这就意味着首屏可以展示更多的内容,多出20%的垂直空间。对于京东淘宝而言这应该就意味着更高的商品曝光率或者是更高的运营位价值。

    从整体设计尺寸看:iPhone 8的像素尺寸是750*1334 px(@2X),而iPhone X的像素尺寸是1125*2436 px(@3X),同样的宽度 一个用@2X图,一个用@3X图,表现出了更高的清晰度。

    图1-4:不同倍图在表现区域一致时的效果——来自HIG

    iPhone X的屏幕密度为458ppi。

    有一种说法:认为肉眼可识别的最高密度为300ppi。而iPhone X的458ppi在手机屏幕历史可能仅次于HTC one的468ppi(2013年), 所以完全可以认为X 是今天市面上最清晰的手机^_^ 无论我这个凡人的肉眼能不能看得出区别来,都不能影响它的傲娇。

    经@风殇月 小伙伴提醒 三星galaxy系列的PPI都到522了,真是鄙人孤陋寡闻,看样子iPhone X连最清晰的手机 也不能吹嘘了。


    布局


    我们再来看看设计师和移动端开发工程师要考虑到的布局:

    1-保证你的设计布局能够填充整个屏幕;

    2-注意你的核心内容不要被设备的大圆角、传感器(齐刘海)、以及底部访问主屏幕的指示灯遮挡;

    图2-1:iPhone X设计应当填充整个屏幕 图2-2:注意X的大圆角和传感器

    设计布局要填充整个屏幕,这里有两块区域需要额外考虑:

    ①屏幕顶部,即StatusBar部分,这条状态栏本来并没有可发挥的空间,但是iphone的StatusBar与NavigationBar(以下简称NavBar)背景是可以通栏的,以达到一种完全沉浸式体验的设计。

    大部分的APP应该也是没有影响的(主流NavBar都采用纯色背景,StatusBar背景沿用NavBar的背景),但是对于那些做了NavBar视觉效果的设计师就要考虑了,你的渐变色背景、或者带底纹的北背景、还包括电商平台商品图是通栏展示的商品图,多少会对实际效果产生一些影响。

    比如,NavigationBar是渐变色背景的,由于X的Status+Nav高度增加,我们1242*192(@3X)的背景图会被等比例拉伸至这两块区域并且剪辑多余部分。如图2-2

    图2-3:NavBar与StatusBar背景图适配上的表现

    ②屏幕底部

    图2-4:访问主屏幕的指示灯区域——来自WWDC

    屏幕底部的虚拟区,替代了home键,高度为34pt。

    指示灯区域是一个带着系统功能的内容显示区域,这就意味着它可以展示你内容;同时如果你的底部是TabBar,那么指示灯区域背景会来自于TabBar背景的延伸;如果我们是一个feed流的页面,底部则会展示次屏feed流的局部。

    图2-5:指示灯区域——来自WWDC

    鉴于圆角、传感器、指示灯区域的影响,iPhone X给出了设计布局的安全区意见:

    图2-6:以iPhone8作为参考的安全区 图2-7:iPhone X全屏的安全区(375*734 pt)

    再考虑必要的NavBar、TabBar,主题内容显示的安全区需要根据设计需求进行考虑。根据实际需要,我们添加的所有控件都应当在安全区内,如各类型的Button、Edit Menu、Pickers、Sliders等等。

    图2-8:所有的控件应当放置在安全区域内 图2-9:安全区域内控件的示范

    注意你的内容不要被裁切:建议内容为居中对称已不被圆角或传感器等遮挡。也建议使用系统提供的的元素以及自动布局来构建页面获得更好的适配效果。

    注意StatusBar的高度:X的状态栏高度会更高,如果有开发伙伴对NavgationBar的位置是通过固定值进行位置的定位的,建议进行APP升级。

    如果你的APP是隐藏StatusBar的,建议重新考虑:X为用户在垂直空间上提供了更多展示余地,且状态栏中也包含了用户需要知道的信息,除非能通过隐藏状态栏带给用户额外的价值,否则苹果建议大家将状态栏还给用户。

    ——任性地翻译自《Human Interface Guiidelines》

    如果看到新的知识点,不定期更新。

    相关文章

      网友评论

      • 6179a7c8f80c:楼主你好,我这边适配iPhone X从第一个页面push进第二个页面然后再pop回前一个页面的时候有时会出现页面白屏的情况,只有通过切换下面的Tab才能看到页面,但在其他机型上是不会出现这种情况的。请问楼主,这是怎么回事?
        520设计:iPhone 所有界面尺寸很详细 http://www.sj520.cn/tools/size/
        无名子子辈:@倬彼昊天花满城 会不会是系统版本的问题?在其他应用试试能不能复现。
        另外 我是非技术出身的pm 爱莫能助:worried:
      • b25ebe3be3bb:UITableViewController 布局到视图上,底部是没有考虑安全区域的,该怎么办呢?
      • Breezes:大佬,如果我是从底部弹出的一个选择框,弹出的位置需要从哪里弹?是从安全区域的最底部,还是屏幕的最底部。
      • Maj_sunshine:我想问下我升了xcode9,不适配iphonex能上架么。因为好像safeArea只能在iOS9以上,在iOS8用不了,或者有什么解决办法么
      • RobinZhao:大神,跪求底部指示灯颜色如何修改
      • 僦匴穤弜竾婹徦装坚强:我就换成使用xib方式加载启动页,感觉什么都不用改啊
      • ac2f17cdee27:iphone X 底部那条黑线什么鬼
        无名子子辈:@___m_b1e2 代替以前的home键,作为返回home页的虚拟操作区
      • WinterIsHere:Sony Xperia XZ Premium 分辨率3840x2160像素,5.5英寸 ,801ppi:grin:
      • 农夫_三拳:更新速度很快 现在要解决怎么适配横屏的问题了
      • EricVan:感觉为了妥协全面屏各种强行交互,苹果靠着绝对领导地位来推广,然后以后大家慢慢也就都这么干了…
      • 回眸月:启动页应该怎么适配?
        无名子子辈:@回眸月 iPhone X 用的三倍图 ,如果按照你说的格式,那么应该是Default-375w-812h@3x 吧,有待确认哈~
        回眸月:@风口上的猪毛 使用Default-Landscape@2x~ipad/Default-375w-667h@2x这样的命名做的启动页,iPhone X的应该是怎样命名的?
        无名子子辈:@回眸月 启动页和引导页建议单独做一套,如果是纯色 对布局没啥要求的话,可以让等比放大再裁切多余部分
      • 乌老大:楼主很用心 学习 了 反正我也不会买
      • 95d8ea4e4809:三星系列旗舰屏幕不都是五百多ppi了么怎么说他是最清晰的手机屏幕:disappointed_relieved:
        无名子子辈:@风殇月 好久不关注安卓手机的,我从维基扒拉的数,应该更新不太及时,我去修改下:joy:
      • 黑默丁格丶:项目的NavgationBar用的自定义的,不知道iPhoneX会显示出个什么效果,忐忑中!
        黑默丁格丶:@风口上的猪毛 今天看了很多文章,感觉会是你说的这样,可是公司网太卡了,准备晚上回家下个xocde9跑起来看看
        无名子子辈:@黑默丁格丶 我觉得statusBar会直接扩高,NavBar估计不会变。官方文档说如果用的autoLayout 会自动延伸,如果是固定布局 建议进行迭代升级

        但是iOS11的NavBar风格都变了,如果设计师要调整,那么代码也改吧。
      • 45e37955a7a5:你们的Xcode能更新了吗,我的才8.3.3
        if_you_like:现在可以更新啦
      • 麦哲文:什么几把破逼设计,不做iOS了
        麦哲文:@Fenixsss 受宠若惊啊:stuck_out_tongue_winking_eye:
        3eaef6016dcc:特地去注册一下来点你这个赞
      • 玫瑰花瓣的信笺:有个问题。将展示内容放入安全区后,状态栏及原有Home键的位置会因为全面屏而多出来的地方(留白)要怎么处理才会显得不那么突兀?这个应该才是考虑的重点吧。
        无名子子辈:@玫瑰花瓣的信笺 状态栏有三种展示方式:黑底/白底/通栏,通栏的方式就是为了使页面看上去不突兀,方式是通过背景延伸。
        底部指示灯区域也是一样,如果有tab 就会保持和tab的一致性,如果是feed流则会变成通明状态 展示feed信息。
      • 小小Q吖:为什么这么快出这个文章了
        小小Q吖:@风口上的猪毛 费心 编写啊
      • 博尔茨杰:6的尺寸写错了,750*1334
        博尔茨杰:@风口上的猪毛 为你点个赞,好速度
        无名子子辈:@阿杰成长中 大意了,是表里的数据吧?已改正
        博尔茨杰:我的强迫症又犯了,看着变扭
      • MeteoriteMan:我说那个公测版本的xcode里面的布局为啥有个safe area原来是做这个的。。。
        45e37955a7a5:@Meteorite陨星 原来是这样
        MeteoriteMan:@寒灯无焰 9.0?正式版还要等个几天。貌似是20几号发布。想下测试版可以搜苹果啥子测试。
        45e37955a7a5:在哪能更新xcode,我的8.3.3就更新不了了
      • 汾酒iOSer:厉害了,继续更新,代码中该如何适配!
        无名子子辈:@SomeVoices 代码中如何更新的艰巨任务 坐等大神们更新
      • 遛遛食:这不就是把刘海那块,不去考虑吗,让出来吗
        无名子子辈:@遛遛食 只看图的话 可以这么理解🙂
      • bramasole潼恩:干货,本来我还在焦虑的,一看突然轻松了
      • _大饼_:厉害了~~~

      本文标题:iPhone X适配没那么复杂,但也不是看上去这么简单

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