iOS开发-LaunchScreen更新启动图片无效

5,717 阅读2分钟

前言

最近在项目开发中遇到需要一个有趣的小问题,记录下来过程,以防后人踩坑。

一、场景

由于最近公司app品牌升级,需要替换新logo。在之前版本由于为了方便适配就使用了LaunchScreen.storyboard来作为启动图。然而当我以为事情很简单时,却发现并不是这么回事,这里面有一个坑,稍有不慎便可能会入坑。

当我只是简单的替换掉原来存放在Asset里的图片后却发现无论怎么清除缓存(卸载,clean,删除DriverData)重装都不能看到新的启动logo图,依然是旧的启动logo。

一番google之后终于搞清楚了问题,在使用LaunchScrren.storyboard启动图之后系统会缓存一张启动图片在系统目录下边,所以不论怎么清理缓存都依然是旧的启动图片。

解决办法一

重启手机,重启手机并启动可以解决这个问题,但是总不能让线上用户也重启手机来处理吧。

解决办法二

使用LaunchImage来作为启动图,但是这样适配比较麻烦需要多个屏幕尺寸的图片。

解决办法三

重命名storyboard依赖的图片,并从Asset移出到工程路径下。

由于系统进程会缓存启动图并缓存你的LaunchStoryboard.storyboard依赖的图片。 最后使用了方案三解决了问题。

追加:
后来发现无论上边的那种方法,线上总会偶现该问题。
需要卸载重装然后启动图才会更新,这就需要线上的用户也卸载重装才可以。
发现是苹果系统对storyboard的缓存问题。暂时没有什么好的办法。

最后

可以参考百度APP关于启动图缓存无效的解决方案(动态生成启动图并替换缓存)

github.com/iversonxh/D…

blog.csdn.net/olsQ93038o9…

如有遇到相同问题可以参考一下,以下是相关的参考链接。

Image in LaunchStoryboard.storyboard Doesn't Update

Launch Storyboard not showing image when project builds to device.