在Xcode6环境下,对于iPhone5或iPhone5s模拟器,在iOS7+运行,屏幕有黑边,但在iOS8没有问题。
原因分析如下:
Xcode6在Xcode5的基础上做了调整,并不是向下兼容的。Xcode5在启动页通过images.asset进行管理,但是到了Xcode6,苹果引入了一种新的启动页机制:LaunchScreen.xib,而这种机制不向下兼容的。Xcode6已经自动为iPhone6以上的模拟器强制使用iOS8+系统,对于iPhone6以上模拟器,不存在这个问题,对月iPhone4s模拟器,在iOS7.1下也仅仅是没有加载LaunchScreen.xib,这种苹果最古老的屏幕尺寸不存在这种情况。但对于iPhone5/5s+iOS7/7.1,由于iOS7无法兼容LaunchScreen.xib这种机制,又找不到default-568h.png文件,问题就出现了。
问题解决:
项目配置也,General有一栏App Icons and Launch Images,其中有一项Launch Images Source,如果你遇到了问题,那么旁边显示的可能是一个按钮,Use Asset Catalog,点一下然后确定就可以了,会在项目中的Images.xcassets中生成LaunchImage,就像Xcode5中那样。此时再运行程序,已经不会再有上下的黑边问题了。但为了更好的用户体验,做张图片放进去吧。当然,在iOS8中依然会加载LaunchScreen.xib,看来至少二者是可以共存的。
问题延伸:
如果你想删掉这套启动图,仅仅是删除Images.xcassets中的LaunchImage是不行的,还要在项目配置,Build Settings中找到Asset Catalog Launch Image Set Name(搜索asset可以帮你快速定位到这项),把后面的值删掉。否则编译都通不过,会报错Images.xcassets: None of the input catalogs contained a matching launch image set named "LaunchImage"。