首先了解下iPhone各个设备的分辨率
iPhone4, iPhone4s 分辨率960*640 长宽比1.5
iPhone5, iPhone5s 分辨率1136*640 长宽比1.775
iPhone6 分辨率1334*750 长宽比1.778
iPhone6+ 分辨率1920*1080 长宽比1.777
由此可见,iPhone4和4s的长宽比是4:3,而iPhone5、5s、6、6+的长宽比可以粗略认为是16:9,是可以等比例缩放的。
再来了解下屏幕像素的宽度
在程序中打印下 [UIScreenmainScreen].bounds.size.width
可以得出不同设备的屏幕像素宽度:
iPhone4/4s/5/5s 320
iPhone6/6plus放大模式 320
iPhone6标准模式 375
iPhone6plus标准模式 414
iOS8提供了2种显示模式:标准模式和放大模式。可以在“设置”的“显示和亮度”中进行修改,在放大模式中屏幕像素宽度都是固定的320,此时界面是等比放大的,而在标准模式中屏幕宽度会变大,此时需要调整界面的各个控件位置来适配新的界面宽度。
如果旧的工程直接跑到这两个模拟器中时,默认是"兼容模式",即系统会简单的把内容等比例放大,显示效果有些模糊但尚可接受。此时App内部获取到的设备分辨率和iPhone5是一样的。
启用高分辨率模式有2个方法:
1.添加大屏的LaunchImage:
在Images.xcassets里,删除旧的LaunchImage组,然后新建LaunchImage组,添加对应高分辨率的图片。
2.添加Launch Screen File
Launch Screen是Xcode6和iOS8新加的功能,它用一个xib文件来作为启动画面。App在旧版iOS(低于ios8)启动时,该属性会被自动忽略,不会造成异常。
首先,点击New File ->iOS User Interface ->Launch Screen,然后在工程设置项里启用它:Launch Screen File
不过这个xib不能关联任何的代码(不能自定义View的Class,不能IBOutlet,不能加Object),可以理解成这个xib就是一张截图,这个方案的好处在于可以使用到Size Classes来针对不同屏幕布局这个xib。
上面两处设置,只要启用任意一个即可让App进入高分辨率模式;但如果两处都没有设置,则App会回退到兼容模式。
两处都设定的话在ios8会走Launch Screen File,在低于ios8 走LaunchImage
LaunchImage的尺寸:
iPhone 6
portrait (@2x) : 750 x 1334
landscape (@2x) : 1334 x 750
iPhone 6 Plus:
portrait (@3x) : 1242 x 2208
landscape (@3x) : 2208 x 1242