最近得闲,没事将公司项目框架,重头到尾整理了一遍。在做需求的时候,要更换启动图片,但是再打包测试的时候,发现启动图片一直更新不上,始终显示老版本的启动图。经过各种折腾终于解决,现在分享出来,给各位遇到相同问题的小伙伴参考。
先来描述下我遇到的问题。早些时候,最早的开发同事用LaunchImage 的方式创建的启动图,这种方式更换启动图,都能及时更新。后面由于遇到5s上适配黑边的问题,公司的小伙伴用launchScreen.storyboar和LaunchImage并存的方式重新做了启动图。然后发出一个版本A,都没什么问题。但是当我们发版本B的时候,发现启动图放上去,打包测试的过程中死活都更新不上,把资源文件里所有的老图都删除掉,也更换不上。于是就有了这篇记录。
缘由
由于历史原因,苹果公司提供两种设置启动图片的方式。launchScreen和LaunchImage
,iOS8以前的系统不支持launchScreen。两种方式如何设置启动图,这就不多说了,相信大家都很了解,不了解可以自己百度一下,有很多相关教程。这里只介如何绍解决问题。为什么会产生我上面所出现的问题呢,经过各种爬文,了解到,launchScreen方式会把启动图缓存到APP的资源包内,每次更新,这一部分资源会检测文件名称,如果名称一致,则不会更新(暂时这么猜测,毕竟谁也不太清楚苹果怎么来做的)。并且,launchScreen的资源优先级大于LaunchImage,无论LaunchImage如何替换资源,只要缓存里面有launchScreen留下的图片,都会使LaunchImage设置实效。经过试验如果想要清除这一步分缓存,可以先卸载APP,然后重启手机,重新下载才行(我们不能要求用户这样做)。所以如果你用过launchScreen来做启动图,就很难回头了。
解决方式
说说我们怎么解决的:
1.将LaunchImage删除,只用launchScreen方式设置启动图
2.在launchScreen方式下,找到启动图,删除,改变图片名称,然后再拖入工程主目录下(不要放在Assets.xcassets中,这样可能更新找不到启动图,呈现白屏)。
3.在更新APP没有意外的话,应该就更新启动图啦。