转载请注明出处:
http://www.cnblogs.com/dokaygang128/p/4049461.html
Apple 今年发布了两款新的iPhone机器,iPhone 6 和iPhone 6 plus :
其中第二幅图是当前主要设备的分辨率情况。这里简单介绍一下这张图。
首先,第一行Point是我们在工程中Controller的ViewWillAppear方法中打印Controller的View时得到frame的Size;
第二行是实际系统生成的显示APP位图时的分辨率;
第三行主要是Plus由于实际的物理分辨率并没有生成的APP位图的分辨率这么大,只有1920*1080,所以显示时有个图片的缩小;
第四行是没英寸像素点个数,代表屏的清晰度;
看到这么多的分辨率,大致也知道我们developer 需要做些适配工作。
适配的方式:
适配的话主要分为两种方式:自动适配和手工适配(完美适配)
我们的旧工程用Xcode 6 打开时默认即是自动适配。在真机上运行APP后会发现显示有些糊,并且和系统的某些APP对比发现navigationbar是变高的。这个主要是因为自动适配系统是将旧Frame大小的位图直接放大进行显示的,不信你打印一下frame看看,宽度还是万年不变的320.
想要打开手动适配模式,有两种方式可供选择:
1.使用大的LaunchImage,原来@2x的1.5倍图像。貌似Xcode6强制使用Asset Catalog。
2.使用一个Launch Xib作为启动画面。
经典适配步骤:
1.有Nib文件的,首先检查Xib文件中各个View的Autoresizing是否正确,主要是宽度进行自适应与右边距。优先设置Controller的
2.检查.m文件中是否有不合理的硬编码320(或者基于320进行计算的)宽度;有的话用View.Width进行替换;
3.检查.m中初始化的View,其Autoresizing是否正确。
杂项:
1.有些高度的计算是硬编码的,只考虑了480和568.
2.有些时候Autoresizing计算宽度实在是不好用了,可以在layoutSubviews或ViewWillAppear中修改;
3.必要时手动调整frame;
4.注意时序问题;