Flutter

使用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,设置约束添加新命名的图片

我在项目中采用的是第二个方法,目测有效,希望能帮到你!!

上一篇下一篇

猜你喜欢

热点阅读