事由
由于改版需求需要更換掉原來的啟動圖,但是在這個過程中卻出現(xiàn)了奇怪的問題,就是啟動圖的圖片修改后,發(fā)現(xiàn)啟動的時候,啟動圖片并沒有發(fā)生改變,這是什么原因呢?即使刪除應(yīng)用再重新安裝,依然無效!
檢查驗證
是不是由于老圖片還存在造成的?仔細(xì)檢查后,包內(nèi)的老圖片確實已經(jīng)被刪除。那很可能的原因就是手機(jī)系統(tǒng)緩存了應(yīng)用的啟動圖,并且在應(yīng)用更換圖片后,由于某種原因系統(tǒng)依然使用老的已緩存的圖片。后來經(jīng)過驗證,刪除應(yīng)用,再重新啟動手機(jī),再安裝應(yīng)用,此時啟動圖才更新成新的啟動圖。
分析原因
蘋果為應(yīng)用提供了兩種設(shè)置啟動圖的方式,LaunchScreen和LaunchImage。iOS 8 以前的應(yīng)用不支持LaunchScreen。使用LaunchImage會不會出現(xiàn)這個問題,目前沒有試驗過,可能是沒有這個問題的?,F(xiàn)在只說一下我使用LaunchScreen.storyboard的情況。
在網(wǎng)上查了資料,使用LaunchScreen的情況下,出現(xiàn)啟動圖不能更新,可能是由于,系統(tǒng)緩存了啟動圖的截屏,并且會根據(jù)啟動圖的名字確定會不會刷新啟動圖的緩存。
目前已知的可行辦法是,啟動圖不要放在Assets.xcassets里邊(放在Assets.xcassets里邊如果更改了啟動圖Set的名字,會出現(xiàn)啟動的時候白屏),啟動圖放到外邊的文件夾下,并且每次更新啟動圖的時候使用不同的名字,這樣每次更換啟動圖后就,啟動的時候就會使用新的啟動圖。
如果之前使用的是LaunchScreen,之后換成LaunchImage,那LaunchImage設(shè)置的啟動圖一定是無效的,因為LaunchScreen的優(yōu)先級高于LaunchImage,沒有什么好的解決辦法,除非刪應(yīng)用,重啟,重裝應(yīng)用。
結(jié)語
這個問題應(yīng)該是蘋果的一個Bug導(dǎo)致應(yīng)用內(nèi)更新啟動圖片后,應(yīng)用啟動時候不能及時更新啟動圖。這一塊具體內(nèi)部的實現(xiàn)并不清楚,不過好在找到了合適的解決辦法。