I have an app where I recently replaced the launch images and app icons, I removed all of the old assets from everywhere in the project. When I upgrade the app from the old version to the new version by just building in Xcode, everything is fine. However, if I have the old version of my app installed then upgrade it from TestFlight, every time I kill the app then restart it the old launch image briefly appears before showing the new launch image. Similarly when I then close the app, the old app icon briefly flashes before switching back to my new one.

我使用iExplorer打开应用,并注意到/Library/Caches/Shapshots目录中保存了旧的启动屏幕图像(我不知道它是如何或为什么会出现在那里)。当我通过iExplorer手动删除它时,它就不再出现了。但是,当我尝试使用NSFileManager方法用代码删除它时,我得到错误,说我被禁止删除这个目录中的文件。

有人有过这样的经历吗?有什么建议吗?


当前回答

我想这要视情况而定。 当它发生在调试或测试时,在启动屏幕上删除图像。 或者卸载你的应用程序,然后重新启动。

但它在存档之后仍然存在,它不能通过重置和清理来解决。

其他回答

好吧,我找到问题所在了。在我之前的应用版本中,我们使用的是启动屏幕XIB。在这个新版本的开发过程中,xib被删除了,取而代之的是静态启动图像。

解决方案是使用启动屏幕XIB。我注意到,当我第一次使用启动屏幕xib时,存储在快照目录中的文件被xib的快照所取代。

这个对我很有用:http://arsenkin.com/launch_screen_image_cache.html

再一次,感谢我上面提到的帖子,我找到了一种方法 解决这个问题-命名你的新图像不同于那里的一个 以防你的新名字和旧名字一样 把它从*里拿出来。Xcassets文件夹到项目目录和 在UIImageView中引用它。就是这样。听起来很傻很简单 天啊,我有多愤怒。

在我的情况下,我没有选择应用程序图标来源从应用程序设置->通用->应用程序图标和启动图像->应用程序图标来源

我找到了变通方案,如果你真的想解决这个问题。 苹果公司有一些机制来缓存启动屏幕的图像,通过图像文件名进行索引。

当你改变任何图像在启动屏幕上,你想看到这些变化在下次运行立即。请使用你修改过的新图片名称,并链接到storyboard或xib中的新图片文件。

再次运行,您将看到新的更改出现。

尝试打开模拟器,进入硬件->擦除所有内容和设置。