原文:橘子不酸丶
转载:https://juejin.im/post/5ea79dadf265da7b9e1a6cb7
前言
最近在项目开发中遇到需要一个有趣的小问题,记录下来过程,以防后人踩坑。
一、场景
由于最近公司app品牌升级,需要替换新logo。在之前版本由于为了方便适配就使用了LaunchScreen.storyboard来作为启动图。然而当我以为事情很简单时,却发现并不是这么回事,这里面有一个坑,稍有不慎便可能会入坑。
当我只是简单的替换掉原来存放在Asset里的图片后却发现无论怎么清除缓存(卸载,clean,删除DriverData)重装都不能看到新的启动logo图,依然是旧的启动logo。
一番google之后终于搞清楚了问题,在使用LaunchScrren.storyboard启动图之后系统会缓存一张启动图片在系统目录下边,所以不论怎么清理缓存都依然是旧的启动图片。
解决办法一
重启手机,重启手机并启动可以解决这个问题,但是总不能让线上用户也重启手机来处理吧。
解决办法二
使用LaunchImage来作为启动图,但是这样适配比较麻烦需要多个屏幕尺寸的图片。
解决办法三
重命名storyboard依赖的图片,并从Asset移出到工程路径下。
由于系统进程会缓存启动图并缓存你的LaunchStoryboard.storyboard依赖的图片。
最后使用了方案三解决了问题。
追加:
后来发现在iOS13.3.1系统上需要卸载重装启动图才会更新,这就需要线上的用户也卸载重装才可以。
然鹅在iOS13.4和iOS12上都没有问题,想必是iOS13.3.1系统缓存的问题。暂时对iOS13.3.1没有什么好的办法。
最后
如有遇到相同问题可以参考一下,以下是相关的参考链接。
Image in LaunchStoryboard.storyboard Doesn't Update
Launch Storyboard not showing image when project builds to device.