点击上方“iOS开发”,选择“置顶公众号”

关键时刻,第一时间送达!

前言


基于很多文章都只是翻译了官方的原文,并没有加入自己的想法和见解,所以我决定自己试着适配 iPhone X,如果出现了失误或者问题,请多指教。毕竟写文章的初衷是为了跟大家一起进步和探讨呢~

熟悉 iPhone X

这里用 iPhone 6 举例子是因为大部分设计师都用 iPhone 6 来做设计稿,方便大家理解,其实 iPhone 8也是这个分辨率。

iPhone 6 :750×1334px(375×667px @2x)

iPhone X :1125×2436px (375×812px @3x)

在逻辑像素上 iPhone X 的宽度和 iPhone 6 保持一致,只是高度高了145px(812-667),如果是用@1x做设计稿,那么在适配 iPhone X 的时候会方便很多,因为只需要增加高度就能得到 iPhone X 的大小,所有的 Symbol 基本不变,只是复制几个苹果爸爸的Symbol 到你的Symbol 里面,用来做 iPhone X 的设计稿。但是如果用@2x 来做设计稿会稍微麻烦些,毕竟Sketch UI Kit 都是基于@1x 来做设计稿的,所以只能把 symbol 重新解散,然后做成@2x大小的尺寸。

虽然它们的逻辑像素宽度一致,但是他们的像素分辨率是不一样的,iPhone 6 采用@2x切图,iPhone X 采用@3x 切图。有人会用@2x 做设计稿,那怎么适配 iPhone X 设计稿,难道要缩放? iPhone 6 (750×1334px)尺寸到 iPhone X(1125×2436px),虽然两者的宽度关系是1.5倍,但是通过缩放做 iPhone X 也是相当麻烦,因为你的 Sketch 设计稿里面可能存在 Symbol,所以这样的做法是行不通的。但如果你的团队都是用@2x 来做设计稿的话,也没什么问题,接下来就提供一个更简单的方法解决 iPhone X 的适配问题。

iPhone X 适配

我列出了 iPhone X 的三种分辨率的尺寸:375×812px(@1x),750×1624px(@2x),1125×2436px(@3x)

如果你的团队使用的是750×1334px(@2x)的设计稿,你在适配 iPhone X 的时候可以采用 iPhone X @2x的图来适配,这样就省去了缩放这一步骤,而且开发使用的是逻辑像素即375pt×812px来做 iPhone X 的设计还原的,所以这样设计 iPhone X 是不会影响开发的,因为750×1624px(@2x)还原到@1x 还是375×812px,相信你已经明白了。

1.iPhone X安全区域问题

如果你用@1x 来做设计稿:iPhone X 安全区域是375×734px。

如果你用@2x 来做设计稿:iPhone X 安全区域是750×1468px。

2.如何计算 iPhone X 安全区域

@1x 的 iPhone X 安全区域:

安全区域=812px—Status Bar (44px) +Home Indicator(34px)

@2x 的 iPhone X 安全区域:

安全区域=1624px—Status Bar (88px) +Home Indicator(68px)

iPhone X 实际案例适配

在开始之前,我们先看一下其他App怎么适配之前的 iOS 设备的,我们可以知道头部区域采用了等比例的方法来适配,因为只有这样才能保证640×1136px上面能够放得下相应的内容。其他的只需要放置相应的切图即可。

一开始以为头部适配很简单,我们也采用了等比例适配,后来发现没有必要,因为 640×1136px基本可以显示完全。然后我们就开始适配 iPhone X 了,后来开发通过 Xcode 模拟出 iPhone X 的适配结果,我发现问题出现了。和我们的用药助手 iOS 开发讨论了以后,发现原来导航栏的高度不是简单的200px 解决的,这里我们采用的是固定高度的做法而不是采用等比例的做法。一般这块区域可以有2种做法:等比例和固定高度,观察你的页面构成,如果页面内容较少可以采用固定高度的做法。不然的话可能在小屏幕手机有些内容放不下。

在没有 iPhone X 之前,固定高度做法:整体蓝色区域高度给200px 解决问题,不用考虑导航栏问题。

但是 iPhone X 出来了,这样的做法就会行不通,因为 iPhone X 的导航栏高度是44px+44px=88px,比 iPhone 6的导航栏(64px)高了24px,所以正确适配 iPhone X 的做法应该是导航栏区域高度(88px)+(200px-64px)=224px,其实就是 Status Bar 高度多了24px,所以224px 比200px 大了24px。

最后总结

这里只是讲解了iPhone X 一小部分和 iOS 适配问题,还有其他适配的经验希望大家在工作中去积累总结,我这里就不一一讲解了。

由于 iPhone X的屏幕比例发生变化,对于长期靠「等比缩放」完成适配的H5活动页而言也有不小的影响,需要对页面结构进行适当微调。(注意缩放的时候不要把主体裁切了,注意页面的布局在 iPhone X 上面的变化)

如果你的App有全屏尺寸的活动图,没有导航栏,这个时候应该给开发 @2x(750×1334px) 和 @3x(1125×2001) 图,然后 iPhone X 上的图会使用@3x的图按照高度铺满,然后裁切两边。(注意两侧被裁切区域不要包含重要内容)

感谢阅读

  • 作者: Olaf Chou

  • 链接:http://www.uisdc.com/adaptive-iphone-x

  • 來源:知乎

  • iOS开发整理发布,转载请联系作者授权

【点击成为安卓大神】

动手试试!手把手教你如何适配 iPhone X相关推荐

  1. 固态硬盘上安装centos_自己动手丰衣足食 手把手教你安装M.2固态硬盘

    为了追求更快的速度.更好的性能,很多用户都为电脑升级或者更换了M.2固态硬盘. 但是,M.2固态硬盘买好了,安装对大部分人来说却是个难题--因此,好多老铁通过微信后台联系小星,想了解一下M.2固态硬盘 ...

  2. 如何写一个自动重复发消息的脚本,聪哥手把手教你(适配任何可发消息的app),亲测有效

    1.复制下面的代码 Set WshShell= WScript.CreateObject("WScript.Shell") WshShell.AppActivate "& ...

  3. iphone快捷指令蚂蚁森林能量_iOS逆向-手把手教你写支付宝蚂蚁森林收集能量助手...

    iOS逆向-手把手教你写支付宝蚂蚁森林收集能量助手 前言 发现iOS支付宝逆向的分析并不多,蚂蚁森林基于H5应用 套着UIWebView 基本也没这类JS和原生交互分析的帖子,就拿此练手吧 作技术分享 ...

  4. 手把手教你iPhone 3G手机软件开发

    手把手教你iPhone 3G手机软件开发 "iPhone 是一款革命性的.不可思议的产品,比市场上其它任何移动电话整整领先了五年,"苹果公司首席执行官史蒂夫·乔布斯如是说,&quo ...

  5. Android图文并茂如何存储,图文并茂,手把手教您如何将笔记本/iphone手机,安卓系统手机传屏到投影/电视...

    原标题:图文并茂,手把手教您如何将笔记本/iphone手机,安卓系统手机传屏到投影/电视 图文并茂,手把手教您如何将笔记本/iphone手机,安卓系统手机传屏到投影/电视 最近很多用户问,我们这套无线 ...

  6. 译文1 手把手教你用cocos2d开发iphone游戏

    手把手教你用cocos2d开发iphone游戏-译文1 (2011-07-07 16:37:00) Learning Cocos2d – A Hands On Guide to Building iO ...

  7. 学计算机换屏幕,自已动手修电脑省钱省时,手把手教你零基础学会笔记本如何换屏...

    原标题:自已动手修电脑省钱省时,手把手教你零基础学会笔记本如何换屏 笔记本电脑做为大家随身携带的移动电脑解决了大家移动办公的需求,他可以让我们在旅游,出差的时候能随时随地办公,给我们提供了极大的方便. ...

  8. iOS逆向-手把手教你写支付宝蚂蚁森林收集能量助手

    iOS逆向-手把手教你写支付宝蚂蚁森林收集能量助手 前言 发现iOS支付宝逆向的分析并不多,蚂蚁森林基于H5应用 套着UIWebView 基本也没这类JS和原生交互分析的帖子,就拿此练手吧 作技术分享 ...

  9. 手把手教你写专利申请书/如何申请专利

    摘要 小前言 (一)申请前的准备工作     1.申请前查询     2.其他方面的考虑     3.申请文件准备 (二)填写专利申请系列文档     1.实际操作步骤     2.具体操作     ...

最新文章

  1. 基于OpenCV的位姿估计
  2. Asp.net Response.Redirect with post data
  3. 第三讲-------Logistic Regression Regularization
  4. java多线程详细讲解_Java多线程例子讲解
  5. css clearfix_如何使用CSS清除浮点数(clearfix)?
  6. 分号可以用来分段么_更高效的GMX分段模拟方法:修改tpr文件
  7. 一千万条数据去重_simhash算法:海量千万级的数据去重
  8. style文件的指定
  9. 非阻塞同步算法实战(二)-BoundlessCyclicBarrier
  10. 用OpenCV制作一个低成本的立体相机
  11. 解决 VMware 新装 CentOS 7.* 连不上网络
  12. abaqus 录制结果动画_后处理动画录制
  13. Linux虚拟机网络配置
  14. x264中关于编码帧存取lookahead的操作
  15. 未来十年,流程管理发展的趋势和挑战
  16. 【Python百日进阶-Web开发-Feffery】Day429 - fac实例:dash多页面相互点击状态保存
  17. win10触摸板升级教程
  18. wifi爆破学习记录
  19. matlab 坐标轴刻度朝外_Matlab 绘图 坐标轴 刻度
  20. 希腊字母发音对照表(发音即对应latex表达式)

热门文章

  1. KeyStore加载PublicKey/PrivateKey(公/私钥)证书
  2. 让柯洁痛哭的AlphaGo,竟耗资3500万美元,耗电量相当于12760个大脑
  3. Operator SDK
  4. 安装CV2,安装opencv
  5. 错误:error LNK2005 解决方法
  6. 10个程序员可以接私活的平台和一些建议,兼职必看
  7. c#文本文件文本替换_如何替换许多文件中存在的文本?
  8. Jmeter压力测试结果报告参数详解
  9. 服务器的ip端口加密协议混淆,Obfsproxy - 混淆/加密端口数据
  10. Golang | 优雅地定义枚举类型