使用flutter_native_splash替换启动图片,iO
2023-08-14 本文已影响0人
Tomous
今天在使用flutter_native_splash
插件替换启动图片的时候,Android手机能替换成功,但是iOS端却依旧显示的旧图片,最后手动配置iOS端的启动页也不好使,即使在整个项目中,已经把就图片删除了,依然不好使,后来查了资料,才知道是因为Apple的LaunchStoryboard.storyboard
缓存的原因。
由于Apple废弃了LaunchImage,采用Launch Screen
的方式来处理启动页,然而Launch Screen
是有缓存的,替换新的启动页并不会成功,包括但不限于(重启Xcode、清理Xcode缓存、卸载APP、更改图片名称、启用代码FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
手动删除缓存)都没有效果,
这是删除缓存的代码,不信的同学可以自己试试,反正我是没有成功。
public extension UIApplication {
func clearLaunchScreenCache() {
do {
try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
} catch {
print("Failed to delete launch screen cache: \(error)")
}
}
}
经过我反复的尝试,发现目前想要解决这个问题,有两个办法:
1、删除App+重启手机;
这个方法有个弊端,就是如果有人安装了app,需要更新新版本的时候,启动页依旧不会替换,你总不能让所有安装了app的人都关机重启吧,这也不现实。
2、重新创建一个新的LaunchScreen.storyboard
,比如命名为NewLaunchScreen.storyboard
,在General里面设置Launch Screen File
为这个新的NewLaunchScreen.storyboard
,重新命名启动图片名称(比如原来启动页叫LaunchImage.png,现在叫NewLaunchImage.png),把这个图片放到工程文件夹下,不要放到Assets里面,然后在NewLaunchScreen
添加imageView,设置约束添加新命名的图片
我在项目中采用的是第二个方法,目测有效,希望能帮到你!!