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方法用代码删除它时,我得到错误,说我被禁止删除这个目录中的文件。

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


当前回答

受到Guilherme Rambo博客文章的启发,我创建了一个cordova插件,以编程方式清除iOS 13+上的启动屏幕缓存:

cordova.plugins.launchScreenCache.deleteLaunchScreenCache().finally((result) => {
    // returns true in the success case, false if iOS <13
    // rejects in an error case
});

更多信息可以在GitHub回购上找到

其他回答

Xcode 10/iOS 12

在尝试了上面提到的所有事情之后,我不得不从LaunchScreen中删除imageview,并用一个新的替换它。

对我有用的是:

删除启动屏幕的场景和视图控制器,并创建一个新的(确保你在属性检查器中将其设置为“初始视图控制器”)。

什么对我不起作用:

删除应用 重新启动iPhone、Mac或Xcode 删除派生数据 删除设备的容器 清洁 焚烧3个史蒂夫·乔布斯的巫毒娃娃

注意:

有时也需要擦除(模拟器)

也有这个问题。作为一个新手,我很天真地改变了启动屏幕。故事板到LaunchScreen.xib。运行失败了(呸),所以我把它改回。storyboard重新运行了应用程序,只是为了测试我没有搞砸任何其他事情——旧的屏幕没有首先出现。所以不管我做了什么,它一定把旧缓存冲出来了。

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

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

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

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