文档章节

大屏 iPhone 的适配

木木情深
 木木情深
发布于 2015/06/16 12:11
字数 1123
阅读 49
收藏 0

自从苹果出了大屏 iPhone 后,iOS 开发也要做适配了,想必 Android 程序员正在偷着乐呢  , 这里大概总结下这几天了解到的大屏适配的注意事项。


启用高分辨率模式

从 Xcode6 GM 版本开始,模拟器新增了 iPhone6 和 iPhone6 Plus 两种,如果旧的工程直接跑到这两个模拟器中时,默认是"兼容模式",即系统会简单的把内容等比例放大,显示效果有些模糊但尚可接受。此时 App 内部获取到的设备分辨率和 iPhone5 是一样的:320*568 point。


启用高分辨率模式有2个方法(目前我能找到的):


1.添加大屏的 LaunchImage:

在 Images.xcassets 里,新建或更改 LaunchImage 组,添加对应高分辨率的图片。对此,这里有一篇更详细的图文介绍:How to Add a Launch Image for the iPhone 6。如果想要快速测试一下新的效果,这里有3张示例图片下载。


2.添加 Launch Screen File

Launch Screen 是 Xcode6 和 iOS8 新加的功能,它用一个 xib 文件来作为启动画面。App 在旧版 iOS 启动时,该属性会被自动忽略,不会造成异常。

首先,点击 New File ->iOS User Interface ->Launch Screen,然后在工程设置项里启用它:


上面两处设置,只要启用任意一个即可让 App 进入高分辨率模式;但如果两处都没有设置,则 App 会回退到兼容模式。鉴于现在不少 App 还需要兼容 iOS5,而第一种方法在 iOS5 上据说可能有bug,所以这里推荐用第二种方法。不过这个xib不能关联任何的代码(不能自定义View的Class,不能IBOutlet,不能加Object),可以理解成这个xib就是一张截图,这个方案的好处在于可以使用到Size Classes来针对不同屏幕布局这个xib(感兴趣可以看《Size Classes初探》


资源的显示

一图胜千言,首先这里是一个完整的图表:  http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions。


简单的说:iPhone4、iPhone5、iPhone6 这几个设备的 ppi 都是相同的,默认图片优先是 @2x。iPhone6 Plus 的像素密度更高,默认图片优先是 @3x。


另外,iPhone6 Plus 有一点和其他设备不同:在 App 内部获得的屏幕分辨率是 1242*2208,但设备实际分辨率是 1920*1080,这时系统会把整体的显示内容做一个缩放,downscale 到1/1.15。这个特性在 OSX 上也有出现过:


下面列举一些可能有用的数据:


               iPhone2G/3G/3GS   iPhone4/4S     iPhone5/5S      iPhone6                  iPhone6         iPhone6+

                                                                                                            Display Zoom   

Point              320*480            320*480       320*568          320*568               375*667        414*736

Pixel              320*480             640*960       640*1136        640*1136             750*1334    1242*2208

Pexel(设备)                              ~                  ~                750*1334                 ~             1920*1080        

Scale                   1                     2                   2                     2                  2                        3

PPI                  163                    326              326                 326                     326               401

 

关于手动适配

只要手动指定了启动图或者那个xib,屏幕分辨率就已经变成应有的大小了,老代码中所有关于写死frame值的代码通通倒霉,如果去手动适配就要全部适配,建议在找到个可行方案前先不要做修改,自动适配方案还算不影响使用。

面对4个分辨率的iPhone,建议使用Auto Layout布局 + Image Assets管理各个分辨率的图片 + Interface Builder(xib+storyboard)构建UI,Size Classes在低版本iOS系统的表现未知。想要这套手动适配方案,起码你的工程需要部署在iOS6+,还不用AutoLayout布局的会死的蛮惨。

关于Xcode6

  1. 模拟器路径被换成了 ~/Library/Developer/CoreSimulator/Devices/

  2. xcode6中已经找不到iOS6的模拟器了,是时候说服大家放弃iOS7-了

  3. 现在起提交App Store强制需要支持64位,是时候梳理一遍所有依赖的第三方lib,更新到64位


本文转载自:http://blog.sunnyxx.com/2014/09/10/iphone6-resolution/

共有 人打赏支持
木木情深
粉丝 37
博文 189
码字总数 26451
作品 0
广州
程序员
私信 提问
iOS 8 AutoLayout与Size Class自悟

iOS 8 AutoLayout与Size Class自悟 前言 iOS8和iPhone6发布已经过去蛮久了,广大的果粉终于迎来了大屏iPhone,再也不用纠结为大屏买三星舍苹果了…但是对于iOS开发人员来说,迎来了和Android开发...

法斗斗
2016/02/19
22
0
iPhone 6 / 6 Plus 设计·适配方案

iPhone 6 / 6 Plus 设计·适配方案 关于iPhone6/6+适配问题一直有争议,今天小编专门为大家整理了相关的有效方案,希望对大伙儿有帮助! 移动app开发中多种设备尺寸适配问题,过去只属于And...

法斗斗
2016/01/04
34
0
iOS 适配 梳理

iPhone 3GS 一个点 1 个像素 iPhone 4 中 一个点 2 个像素 使用 AutoLayout 不用绝对布局 使用设计网页的方式来设计页面 非矢量素材,先做出最大尺寸的如 3x 图,再缩小,减少失真 矢量图,可...

iOS_愛OS
2017/12/12
0
0
iOS开发之iOS11、iPhone X、Xcode9 适配指南

更新iOS11后,发现有些地方需要做适配,整理后按照优先级分为以下三类: 1.单纯升级iOS11后造成的变化; 2.Xcode9 打包后造成的变化; 3.iPhoneX的适配 一、单纯升级iOS11后造成的变化 1. 升...

ziyuzhiye
2017/10/13
0
0
自动布局-Size Class

简介 先来看一下我们的新伙伴:Size Classes。在 iOS8 中,我们不用再像以前那样,一个页面新建多个 xib 文件来适配不同类型的屏幕,现在我们可以把各种尺寸屏幕的适配工作放在一个文件中完成...

HelloSwift
2016/08/08
5
0

没有更多内容

加载失败,请刷新页面

加载更多

Java生成二维码图片

maven配置jar包 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version></dependency><dependency><groupId>com.google.z......

骑羊放狼灬
4分钟前
0
0
oracle 修改字段类型

1.varchar2 类型修改 例子:alter table T_Node modify (NODE_CONTEXT varchar2(4000)); 2.varchar2 修改为clob 例子: alter table T_Node add hehe clob; update T_Node set hehe=NODE_CO......

qimh
7分钟前
1
0
别再写 bug 了,避免空指针的 5 个案例!

空指针是我们 Java 开发人员经常遇到的一个基本异常,这是一个极其普遍但似乎又无法根治的问题。 本文,栈长将带你了解什么是空指针,还有如何有效的避免空指针。 什么是空指针? 当一个变量...

Java技术栈
12分钟前
1
0
FastJson对BigDecimal保留两位小数(valueFilter)

实现ValueFilter public class BigDecimalValueFilter implements ValueFilter { @Override public Object process(Object o, String name, Object value) {//o是待转换的对象,n......

石日天
13分钟前
1
0
android 颜色透明度参照比

##透明度参照表: 00%=FF(不透明) 5%=F2 10%=E5 15%=D8 20%=CC 25%=BF 30%=B2 35%=A5 40%=99 45%=8c 50%=7F 55%=72 60%=66 65%=59 70%=4c 75%=3F 80%=33 85%=21 90%=19 95%=0c 100%=00(全透......

东街小霸王
14分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部