苹果推出了 iOS 8、iPhone  6 / 6 Plus、Xcode 6 等新产品、新工具,多了两种屏幕尺寸。关于如何适配 iPhone  6 / 6 Plus,我查阅了一些资料,总结了一些信息,列在下面,与大家探讨。

首先几篇介绍文章:

http://blog.sunnyxx.com/2014/09/10/iphone6-resolution/

http://www.paintcodeapp.com/news/iphone-6-screens-demystified

http://stackoverflow.com/questions/25818845/how-do-vector-images-work-in-xcode-6-i-e-pdf-files

http://www.zhihu.com/question/25281284/answer/30445170

我的简单总结:

iPhone 尺寸

iPhone 5s 分辨率 320×568 pt,像素 640×1136,@2x

iPhone 6 分辨率 375×667 pt,像素 750×1334,@2x

iPhone 6 Plus 分辨率 414×736 pt,像素 1242×2208,@3x(注意,在这个分辨率下渲染后,图像等比降低分辨率至 1080×1920)

iPhone 6 Plus 因为是 1242×2208 再 downscale 到 1080×1920,所以怎么也做不出像素完美的图了,不管按 1242×2208 还是 1080×1920 设计都不行。

另一方面,iPhone 5s、iPhone 6、iPhone 6 Plus 的屏幕长宽比例,都约等于 1.78,基本一致。

适配 iPhone 5s 的工程,在 Xcode 6 中用 iPhone 6 / 6 Plus 的模拟器打开一看,很可能看起来完全正常。自动放大了,没有黑边和比例失调的地方。只不过因为放大了,图标可能会稍微有点模糊。

至此,要求不高的人可以止步了。设计可以还按 iPhone 5s 的 640×1136 像素,程序也基本不用特殊适配,iPhone 5s 适配好了,iPhone 6 / 6 Plus 自动等比放大,效果也还过得去。

下面一步,追求更完美的人可以考虑。Xcode 6 支持矢量图了!(目前仅支持 .pdf 格式。)

Xcode 6 的支持方式是,在 build 的时候自动生成 @1x、@2x、@3x 的位图。

因为还是生成了位图,所以老版本 iOS 仍然兼容,不会有问题。另外,在 build 时生成位图,会增加 build 时的计算量,但对运行时的效率不会有负面影响。

这样做省了自己导出不同尺寸图片的这一步,只要提供 @1x 大小的 .pdf 格式图片即可。

如果布局采用苹果强烈推荐的 Auto Layout,图片使用矢量,那么无论苹果再怎么改分辨率,都会比较轻松~

使用 Auto Layout,我们只要表达出 UIView 应该靠左、靠右、居中、边距多少等信息,Auto Layout 根据设备尺寸自动计算各 UIView 的 frame,即使苹果又出了新的分辨率也不怕。

使用矢量图,即使哪天苹果又要用 @4x 的图片,也不用重新做图。

总之,要告别绝对定位、手工计算并写死 frame 的时代了~