使用flutter_native_splash替換啟動圖片,iOS端替換不成功
- 1、刪除App+重啟手機;
- 2、重新創建一個新的`LaunchScreen.storyboard`,比如命名為`NewLaunchScreen.storyboard`,在General里面設置`Launch Screen File`為這個新的`NewLaunchScreen.storyboard`,重新命名啟動圖片名稱(比如原來啟動頁叫LaunchImage.png,現在叫NewLaunchImage.png),把這個圖片放到工程文件夾下,不要放到Assets里面,然后在`NewLaunchScreen`添加imageView,設置約束添加新命名的圖片
今天在使用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,設置約束添加新命名的圖片
我在項目中采用的是第二個方法,目測有效,希望能幫到你!!簡書地址