关于iPhone6/6+适配问题一直有争议,今天小编专门为你们整理了相关的有效方案,但愿对大伙儿有帮助! html
移动app开发中多种设备尺寸适配问题,过去只属于Android阵营的头疼事儿,只是不少设计师选择性地忽视android适配问题,只出一套iOS平台设计稿。随着苹果发布两种新尺寸的大屏iPhone 6,iOS平台尺寸适配问题终于仍是来了,移动设计全面进入“杂屏”时代。看看下面三款iPhone尺寸和分辨率数据就知道屏幕有多杂了。 前端
加上Android生态中纷繁复杂的各类奇葩尺寸,如今APP设计开发必须考虑适配大、中、小三种屏幕。因此如何作到交付一套设计稿解决适配大中小三屏的问题?设计和开发之间采用什么协做模式?一个基本思路是: android
一、选择一种尺寸做为设计和开发基准; ios
二、定义一套适配规则,自动适配剩下两种尺寸; web
三、特殊适配效果给出设计效果。 架构
手机淘宝的iPhone 6/iPhone 6 Plus适配版本即将提交App store审核。先晒一下咱们采用的协做模式,再慢慢说明原委。 app
第一步,视觉设计阶段,设计师按宽度750px(iPhone 6)作设计稿,除图片外全部设计元素用矢量路径来作。设计定稿后在750px的设计稿上作标注,输出标注图。同时等比放大1.5倍生成宽度1125px的设计稿,在1125px的稿子里切图。 ide
第二步,输出两个交付物给开发工程师:一个是程序用到的@3x切图资源,另外一个是宽度750px的设计标注图。 工具
第三步,开发工程师拿到750px标注图和@3x切图资源,完成iPhone 6(375pt)的界面开发。此阶段不能用固定宽度的方式开发界面,得用自动布局(auto layout),方便后续适配到其它尺寸。 布局
第四步,适配调试阶段,基于iPhone 6的界面效果,分别向上向下调试iPhone 6 plus(414pt)和iPhone 5S及如下(320pt)的界面效果。由此完成大中小三屏适配。
为何选择iPhone 6做为基准尺寸?
当面对大中小三种屏幕须要适配的时候,很容易想到先作好一种屏幕,再去适配剩下两种屏幕。第一个决定是到底以哪一种屏幕做为设计和开发的基准尺寸。咱们选择中间尺寸的iPhone 6(750px/375pt)做为基准,基于几个缘由:
一、从中间尺寸向上和向下适配的时候界面调整的幅度最小。375pt下的设计效果适配到414pt和320pt误差不会太大。假设以414pt为基准作出很优雅的设计,到320pt可能元素之间比例就不是那么回事了,好比图片和文字之间视觉比例可能失调。
二、iPhone 6 plus有两种显示模式,标准模式分辨率为1242×2208,放大模式分辨率为1125×2001(即iPhone 6的1.5倍)。可见官方系统里iPhone 6和iPhone 6 plus分辨率之间就存在1.5倍的倍率关系。不少状况下这两种尺寸能够用1.5倍直接等比适配。
三、1242×2208这个奇葩的数值是苹果官方都不肯意公开宣传的一个分辨率,不便于记忆和计算栅格。640×1136虽然是普遍应用的一个分辨率,可是大屏时代依然以小尺寸为设计基准显然不合时宜,设计师会停留在小屏的视角作设计。
因此,iPhone6的750×1334是最适合基准尺寸。
只交付一套设计稿,默认用什么规则来适配?
前文提到适配策略是先选择iPhone 6做为基准设计尺寸,而后经过一套适配规则自动适配到另外两种尺寸。这套适配规则总结起来就一句话:文字流式,控件弹性,图片等比缩放。
控件弹性指的是,navigation、cell、bar等适配过程当中垂直方向上高度不变;水平方向宽度变化时,经过调整元素间距或元素右对齐的方式实现自适应。这样屏幕越大,在垂直方向上能够显示更多内容,发挥大屏幕的优点。
按照上述默认适配规则,大中小三种屏幕显示效果均相同。有时候想在大屏幕显示更多内容,须要设计出特殊适配效果。好比App store首页焦点图,从iPhone 6适配到iPhone 6 plus时焦点图尺寸和排版作了特殊处理。底下应用列表也从一排3+个变成一排4+个,真正实现了大屏幕显示更多内容的理念。这些就须要设计师给出相应设计稿。
从iPhone 6 开始 iOS 的 UI 设计方式更像 web 而不是 app,不一样尺寸的 iPhone 上 UI 的结构是同样的,各 UIView 的位置尺寸会有所不一样。好比一样的一段文本,iPhone 5S 上要显示5行, iPhone 6 Plus 上可能只要三行,显示它们的 UITextView 的尺寸就会不一样。苹果从 iOS 6 开始提供了 Auto Layout ,(Auto Layout Guide: Introduction),他的做用相似 web 中的 CSS,能够用排版语言对 UIView 进行布局,咱们只要表达出 UIView 应该靠左、靠右、居中、边距多少等信息,Auto Layout 根据设备尺寸自动计算各 UIView 的 frame。之前 UI 设计喜欢用绝对定位,由于 iPhone 6 以前全部 iPhone 的宽度都是 320 points(注意,不是 pixels),从 iPhone 6 开始将有不一样的尺寸(因此叫 Resizeable iPhone),若是用绝对定位就须要针对每种设备作调整,设计师会骂娘的。
还有就是 app 的 Launch Image,由于设备尺寸增多,再结合横屏竖屏,致使的结果是一个 app 要有 n 多个 Launch Image,iOS 8 开始提供了 Launch Screen 的概念,如今能够用一个 xib 文件来做为 Launch Screen,而后用 Interface Builder 对 Launch Screen 进行设计,由于可使用 Auto Layout,因此咱们只须要一个 xib 文件均可以应对全部尺寸的 iPhone。
之前一直以为 iOS 的 UI 开发不如 Android,经过手工计算 frame 位置来布局简直是石器时代的作法,如今 iPhone 虽然尺寸变多了,不过由于有了成熟的 Auto Layout, UI 的设计和开发变的反而比之前更容易。
1. 换工具,最好用 Sketch,其次推荐 AI。放弃 Photoshop 吧,对矢量支持的太无力
2. 只用输出一倍的矢量图(PDF)就能够了
咱们不再须要计算了,丧心病狂的苹果已经开始支持矢量图了,咱们只须要给工程师输出一倍的矢量图就能够了,目前仅发现支持 PDF 格式。
刚才已经和咱们的工程师调试成功了,在 iPhone 6 plus 模拟器上的对比效果:矢量图支持的很是完美。
陈伟答案中对 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 的设计稿了。
如何支持多个尺寸屏幕,这个要分状况讨论。
对于常规界面咱们能够偷个懒,只作 iPhone 5 屏幕尺寸的设计稿,请开发在其它屏幕上自适应,最终检查实机效果没问题就行。
苹果官网上屏幕对比页面里用到的都是常规界面:
对于一些定制的界面咱们应该根据不一样屏幕从新适配,好比下面是个简单的 profile 页面示例,自动适配到大屏幕的效果挺糟糕的。
此时设计师应该手动为大屏幕从新调整设计,像下图同样。
在上图中可看出 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 的朋友不妨试用一下。
————————————————————————————————————————————————————————————————————————————
最后小结:
小编认为方法都是为了简化工做提升效率,没有标准答案,只有适合本身习惯的方法;
用心比什么都重要,方法也会随之出现;
设计师随着技术的发展慢慢也须要兼顾扩宽本身的技术面,比方上边说的前端知识;
但愿更多的小伙伴一块儿将设计领域的内容分享,让知识沉淀下来帮助更多的人。
以上内容来源:http://www.zhihu.com/question/25308946?sort=created