作者:pigtwo
链接:https://www.zhihu.com/question/25308946/answer/32240185
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

移动app开发中多种设备尺寸适配问题,过去只属于Android阵营的头疼事儿,只是很多设计师选择性地忽视android适配问题,只出一套iOS平台设计稿。随着苹果发布两种新尺寸的大屏iPhone 6,iOS平台尺寸适配问题终于还是来了,移动设计全面进入“杂屏”时代。看看下面三款iPhone尺寸和分辨率数据就知道屏幕有多杂了。

<img src="https://pic1.zhimg.com/e3e2ae47eb391693752d6d73f60b8eb0_b.jpg" data-rawwidth="727" data-rawheight="711" class="origin_image zh-lightbox-thumb" width="727" data-original="https://pic1.zhimg.com/e3e2ae47eb391693752d6d73f60b8eb0_r.jpg">

加上Android生态中纷繁复杂的各种奇葩尺寸,现在APP设计开发必须考虑适配大、中、小三种屏幕。所以如何做到交付一套设计稿解决适配大中小三屏的问题?设计和开发之间采用什么协作模式?一个基本思路是:

1、选择一种尺寸作为设计和开发基准;

2、定义一套适配规则,自动适配剩下两种尺寸;

3、特殊适配效果给出设计效果。

手机淘宝的iPhone 6/iPhone 6 Plus适配版本即将提交App store审核。先晒一下我们采用的协作模式,再慢慢说明原委。

<img src="https://pic4.zhimg.com/62dd57dee9f859151b8ea6a939968a53_b.jpg" data-rawwidth="736" data-rawheight="533" class="origin_image zh-lightbox-thumb" width="736" data-original="https://pic4.zhimg.com/62dd57dee9f859151b8ea6a939968a53_r.jpg">

第一步,视觉设计阶段,设计师按宽度750px(iPhone 6)做设计稿,除图片外所有设计元素用矢量路径来做。设计定稿后在750px的设计稿上做标注,输出标注图。同时等比放大1.5倍生成宽度1125px的设计稿,在1125px的稿子里切图。

第二步,输出两个交付物给开发工程师:一个是程序用到的@3x切图资源,另一个是宽度750px的设计标注图。

第三步,开发工程师拿到750px标注图和@3x切图资源,完成iPhone 6(375pt)的界面开发。此阶段不能用固定宽度的方式开发界面,得用自动布局(auto layout),方便后续适配到其它尺寸。

第四步,适配调试阶段,基于iPhone 6的界面效果,分别向上向下调试iPhone 6 plus(414pt)和iPhone 5S及以下(320pt)的界面效果。由此完成大中小三屏适配。

为什么选择iPhone 6作为基准尺寸?

当面对大中小三种屏幕需要适配的时候,很容易想到先做好一种屏幕,再去适配剩下两种屏幕。第一个决定是到底以哪种屏幕作为设计和开发的基准尺寸。我们选择中间尺寸的iPhone 6(750px/375pt)作为基准,基于几个原因:

1、从中间尺寸向上和向下适配的时候界面调整的幅度最小。375pt下的设计效果适配到414pt和320pt偏差不会太大。假设以414pt为基准做出很优雅的设计,到320pt可能元素之间比例就不是那么回事了,比如图片和文字之间视觉比例可能失调。

2、iPhone 6 plus有两种显示模式,标准模式分辨率为1242x2208,放大模式分辨率为1125x2001(即iPhone 6的1.5倍)。可见官方系统里iPhone 6和iPhone 6 plus分辨率之间就存在1.5倍的倍率关系。很多情况下这两种尺寸可以用1.5倍直接等比适配。

3、1242x2208这个奇葩的数值是苹果官方都不愿意公开宣传的一个分辨率,不便于记忆和计算栅格。640x1136虽然是广泛应用的一个分辨率,但是大屏时代依然以小尺寸为设计基准显然不合时宜,设计师会停留在小屏的视角做设计。

所以,iPhone6的750x1334是最适合基准尺寸。

只交付一套设计稿,默认用什么规则来适配?

前文提到适配策略是先选择iPhone 6作为基准设计尺寸,然后通过一套适配规则自动适配到另外两种尺寸。这套适配规则总结起来就一句话:文字流式,控件弹性,图片等比缩放。

<img src="https://pic2.zhimg.com/feffdcc6023e2f17e9000d2e70a34d91_b.jpg" data-rawwidth="713" data-rawheight="460" class="origin_image zh-lightbox-thumb" width="713" data-original="https://pic2.zhimg.com/feffdcc6023e2f17e9000d2e70a34d91_r.jpg">

控件弹性指的是,navigation、cell、bar等适配过程中垂直方向上高度不变;水平方向宽度变化时,通过调整元素间距或元素右对齐的方式实现自适应。这样屏幕越大,在垂直方向上可以显示更多内容,发挥大屏幕的优势。

<img src="https://pic4.zhimg.com/2d10708e03046b24477778c03ea2a853_b.jpg" data-rawwidth="750" data-rawheight="1279" class="origin_image zh-lightbox-thumb" width="750" data-original="https://pic4.zhimg.com/2d10708e03046b24477778c03ea2a853_r.jpg">
<img src="https://pic4.zhimg.com/006b79515d661fd8e5ed9a9fbaec9dff_b.jpg" data-rawwidth="750" data-rawheight="1270" class="origin_image zh-lightbox-thumb" width="750" data-original="https://pic4.zhimg.com/006b79515d661fd8e5ed9a9fbaec9dff_r.jpg">

按照上述默认适配规则,大中小三种屏幕显示效果均相同。有时候想在大屏幕显示更多内容,需要设计出特殊适配效果。比如App store首页焦点图,从iPhone 6适配到iPhone 6 plus时焦点图尺寸和排版做了特殊处理。底下应用列表也从一排3+个变成一排4+个,真正实现了大屏幕显示更多内容的理念。这些就需要设计师给出相应设计稿。

<img src="https://pic1.zhimg.com/896c935642bdac91555d3075ee61e3b8_b.jpg" data-rawwidth="750" data-rawheight="1252" class="origin_image zh-lightbox-thumb" width="750" data-original="https://pic1.zhimg.com/896c935642bdac91555d3075ee61e3b8_r.jpg">

编辑于 2014-10-22
1068 73 条评论

分享

收藏 感谢 收起

更多回答

刘炜
http://dinehq.com

收录于 编辑推荐 · 401 人赞同了该回答

陈伟答案中对 Photoshop 的看法有些误导。

Photoshop 支持用矢量(而且应该只用矢量)元素设计界面,只是无法输出矢量资源(可以通过脚本用 AI 输出 SVG,但相对不那么方便)。

最新的 Photoshop 是有跟 Sketch 一样的输出切图功能的(Generator),用 2x 的 PSD 输出 3x 的切图也可以。而且 Photoshop 配合 Slicy 输出切图比 Sketch 3 快捷很多。

Sketch 相当棒,但目前(v3.1)还是有不少小问题,加上对中文支持不够好,在界面设计中还不能完全取代 Photoshop。

关于题目的问题,首先一份设计稿就不能适用于 iOS 各手机屏幕尺寸。以下是 Bjango 把目前各 iOS 手机屏幕还原为 1x 的对比图,可见在设计稿中四种屏幕尺寸宽高都不一样,不是简单地把 iPhone 5 界面缩放一下就变成 iPhone 6 的设计稿了。

<img src="https://pic2.zhimg.com/a3e5418e0edf9c0900f585dde852f69d_b.jpg" data-rawwidth="1589" data-rawheight="836" class="origin_image zh-lightbox-thumb" width="1589" data-original="https://pic2.zhimg.com/a3e5418e0edf9c0900f585dde852f69d_r.jpg">

如何支持多个尺寸屏幕,这个要分情况讨论。

对于常规界面我们可以偷个懒,只做 iPhone 5 屏幕尺寸的设计稿,请开发在其它屏幕上自适应,最终检查实机效果没问题就行。

苹果官网上屏幕对比页面里用到的都是常规界面:

<img src="https://pic1.zhimg.com/9f67121cb834cb4ba69e278a767ee6f8_b.jpg" data-rawwidth="1350" data-rawheight="1087" class="origin_image zh-lightbox-thumb" width="1350" data-original="https://pic1.zhimg.com/9f67121cb834cb4ba69e278a767ee6f8_r.jpg">

对于一些定制的界面我们应该根据不同屏幕重新适配,比如下面是个简单的 profile 页面示例,自动适配到大屏幕的效果挺糟糕的。

<img src="https://pic2.zhimg.com/df35e6887a331d3275151b8f0a04343d_b.jpg" data-rawwidth="1350" data-rawheight="1087" class="origin_image zh-lightbox-thumb" width="1350" data-original="https://pic2.zhimg.com/df35e6887a331d3275151b8f0a04343d_r.jpg">

此时设计师应该手动为大屏幕重新调整设计,像下图一样。

<img src="https://pic1.zhimg.com/4b6ffa8bdb7bc3691fd0dd1541ecd664_b.jpg" data-rawwidth="1350" data-rawheight="1087" class="origin_image zh-lightbox-thumb" width="1350" data-original="https://pic1.zhimg.com/4b6ffa8bdb7bc3691fd0dd1541ecd664_r.jpg">

在上图中可看出 iPhone 6 Plus 界面中部分切图尺寸比 3x 更大,要单独切图,所以不是说简单地给 iPhone 6 Plus 统一切 3x 图就 OK 的了。这时矢量切图在开发中优势很明显,只要把大屏幕中切图的尺寸告诉开发即可,无需针对非 3x 元素额外输出切图。

* 手机屏幕毕竟还是像素位图,像细线图标即使是矢量的在缩放后仍可能会出现虚化模糊的现象(类似 HTML 里的 icon font),理论上并非所有情况都适合用矢量切图。但是,iPhone 6 Plus 屏幕本身又是 downscale 的,导致原本 pixel perfect 的切图也会在缩放后发虚,完全没有 pixel perfect 而言,究竟是不是 iPhone 6 Plus 屏幕已经优化的看不出像素点了,要等看到实机才能确定。

切图方面用 Sketch 的话可以尽量试试 PDF 矢量切图(但要在实机上确认效果)。Photoshop 就只能输出位图了,上面提到定制界面里的一些切图得单独输出,其他常规的用 2x 的 PSD 输出 1-3x 切图即可。

另外,与 Photoshop 和 Sketch 相比,AI 不适合做界面设计。勇于尝试 Sketch 是好的,但若 Sketch 各种毛病忍不了的话建议还是用 Photoshop 好些。

* 关于 AI 不适合做界面设计的看法,其实作为功能强大的矢量设计工具,AI 当然可以用来设计界面,只是没那么方便(我一位客户给我的设计稿还是 InDesign 设计的)。Sketch 吸收了不少 AI 与 Fireworks 的优点,比 AI 好很多,用惯 AI 的朋友不妨试用一下。

iPhone 6 / 6 Plus 出现后,如何改进工作流以实现一份设计稿支持多个尺寸?相关推荐

  1. 李彦宏给创新员工发放2000万奖金;iPhone 14系列新机涨价后,电池维修费也涨至748元|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  2. 产业链加入爆料行列!2019年新iPhone:外形无变化 后置摄像头升级

    据外媒报道,巴克莱分析师Blayne Curtis从苹果上游产业链收集到的信息表明,2019年苹果会发布三款全新iPhone,外观设计变化很小.而2020年的新款iPhone,将在外形上可能有大的变化 ...

  3. 苹果设置显示连接到服务器,iPhone升级更新至iOS9后显示连接到iCloud服务器错误现象的解决办法...

    IOS9正式版系统已经推出了,很多用户也更新升级使用了,有部分伙伴发现将iPhone手机升级至IOS9后连接iCloud时出现错误的情况,那么,IOS9连接iCloud出错怎么办呢?针对此问题,本文就 ...

  4. iPhone更换电池和屏幕后提醒非原厂配件的操作办法

    ---开局一张图,内容全靠编系列! [图] 自从在iPhone系统iOS13开始支持原厂配件检测后,可以说苹果也动起了维修站商家利益的这块蛋糕.道理自然简单,卷嘛!全球汽车行业也不是靠卖新车才赚钱的, ...

  5. Win10广告过多让人反感 外媒炮轰后微软改进了

    对于用户来说,广告过多会影响体验,甚至会让人反感. 现在微软宣布Windows 10已支持可运行性广告(Playable Ads),这绝对是一个不错的功能,因为用户可以在下载应用前,先对其进行体验,如 ...

  6. ac9560不支持承载_IPFS 最新进展:0.5 版本改进较大,已出现系统级支持 | 火星号精选...

    免责声明:本文旨在传递更多市场信息,不构成任何投资建议.文章仅代表作者观点,不代表火星财经官方立场. 小编:记得关注哦 来源:IPFS原力区 原文标题:IPFS 最新进展:0.5 版本改进较大,已出现 ...

  7. uni-app 对照设计稿还原不同屏幕像素适配(iPhone X)

    最近项目中需要高频度使用单位像素换算,以适配不同屏幕大小的需求,这里我以蓝湖为例,下面我给出换算步骤: 1.把蓝湖设计稿选到 ios 端,这时候页面单位变成了pt,因为我们iPhone X的屏幕和这个 ...

  8. 2022消费人群_市场研报:Z世代/95后/新青年/单身(共108份)

    合集名称:2022消费人群_市场研报:Z世代/95后/新青年/单身 数量:108份 日期范围:2021.8-2022.3 具体内容: [消费人群分析]00后生活方式洞察报告2021-人民网-2021- ...

  9. iPhoneX设计稿适配Android,设计干货:iPhone X APP UI设计尺寸和适配【完整版】

    被iPhone X刷了一天屏,到下午实在受不了各种假帖.标题写着"iPhone X 适配.指南.设计稿" 内容却是发布会回顾和手机介绍.索性自己去官网找素材写一篇只针对iPhone ...

最新文章

  1. WifiP2pService工作流程
  2. 2020-11-18(失败的一天)
  3. mysql的错误代码1064_mysql错误代码之1064的解决方案
  4. jquery清空div内容_一键清空微博
  5. Qt Creator调试C ++示例应用程序
  6. python中ndarray对象实例化_Python数据分析之Numpy学习 2——NumPy 基础 ndarray对象
  7. c++获取sqlite3数据库表中所有字段的方法
  8. postman测试 上传下载文件
  9. 访问修饰符作用范围由大到小是_9个java基础小知识
  10. cpu 指定cpu执行 java_java程序可以实现在指定CPU上运行吗?
  11. 数据结构 6-0 图
  12. R语言中读取xlsx文件的方法
  13. IDEA - Live Template
  14. 匹配滤波器结合Matlab实现
  15. java生成二维码工具
  16. 关闭windows defender安全中心的方法
  17. Educational Codeforces Round 95 (Rated for Div. 2)C. Mortal Kombat Tower(状态机dp)
  18. win7系统如何开启蓝牙
  19. Arangodb集群web interface登陆认证设置
  20. VC删除IE缓存、COOKIE及浏览记录

热门文章

  1. orb-slam2回环检测3
  2. 内网渗透(十五)之内网信息收集-域环境中定位域管理员
  3. (超详细保姆级教程)CISCN_2023--Web-Unzip(内有做题网站)
  4. 玩转华为ENSP模拟器系列 | 配置OSPF基本功能示例
  5. 安卓手机免root本地运行青龙面板(ZeroTermux)
  6. mysql修改路径报错_mysql修改数据存储路径报错处理
  7. 多元函数第六:连续函数(3)单调有界收敛定理
  8. 二叉树的最近公共祖先、二叉搜索数的最近公共祖先
  9. 百宝云注册码系统新手教程
  10. Bootstrap框架菜鸟入门教程