第七章

去年今日此门中,人面桃花相映红。人面不知何处去,桃花依旧笑春风。

iOS设置启动图的两种方式和bug汇总

前段时间一直在折腾启动图的设置,忙到最后发现居然是 Apple 的锅。。。

先讲一下正常的设置启动图的流程,有两种方式,一种是LaunchImage的方式,另一种就是LauchScreen.storyboard的方式。见下图:

其一:

其二:

以下是遇到的问题:

1.单独使用 LaunchImage 来设置启动图时:

①iOS9 系统的手机,在 APP 从后台通过 openURL 拉起到前台时,不会出现启动图;

②但 iOS7 和 iOS8 正常。

2.单独使用 LaunchScreen.storyboard 来设置启动图时:

①iOS7 不支持该方式;

②iOS8 系统会导致 APP 在从后台被拉起到前台时,先出现黑屏再出现启动画面的情况,

③iOS9 系统,如果更换过启动图, APP 在后台被拉起到前台时出现的启动图不会更新。

3.使用 LaunImage 和 LaunchScreen.storyboard 混用的方式,问题如下:

①iOS8 系统会导致 APP 在从后台被拉起到前台时,先出现黑屏再出现启动画面的情况;

②iOS9 系统,如果更换过启动图, APP 在后台被拉起到前台时出现的启动图不会更新。

补充:

另如果某个版本使用了 LaunchScreen.storyboard 方式来设置启动图后,后续的升级版本不可再更改为 LaunchImage 的方式,如果有更改,则启动图依然会使用之前 LaunchScreen.storyboard 里的内容。见 stackoverflow 的这个问题

关于 iOS8 下 APP 从后台拉起到前台会先短时间黑屏的问题,测试发现微信和微博也同样存在。

解决方案: 如果可以像微信和微博一样,容忍iOS8系统下拉起时的短暂黑屏,而且确定以后不会更改启动图,也不会再转回使用LaunchImage来设置启动图的方式,那么就可以使用LaunchScreen.storyboard这种方式来设置启动图,否则还是乖乖使用LaunchImage这种方式吧,而且,如果你的应用需要支持iOS7,那么也要使用LaunchImage方式,当然你可以在应用中同时使用两种设置启动图的方式来兼容iOS7和以后的系统。

两种启动图方式同时设置见下图: