事由
由于改版需求需要更換掉原來(lái)的啟動(dòng)圖,但是在這個(gè)過(guò)程中卻出現(xiàn)了奇怪的問(wèn)題红淡,就是啟動(dòng)圖的圖片修改后,發(fā)現(xiàn)啟動(dòng)的時(shí)候降铸,啟動(dòng)圖片并沒(méi)有發(fā)生改變在旱,這是什么原因呢?即使刪除應(yīng)用再重新安裝推掸,依然無(wú)效桶蝎!
檢查驗(yàn)證
是不是由于老圖片還存在造成的驻仅?仔細(xì)檢查后,包內(nèi)的老圖片確實(shí)已經(jīng)被刪除登渣。那很可能的原因就是手機(jī)系統(tǒng)緩存了應(yīng)用的啟動(dòng)圖噪服,并且在應(yīng)用更換圖片后,由于某種原因系統(tǒng)依然使用老的已緩存的圖片胜茧。后來(lái)經(jīng)過(guò)驗(yàn)證粘优,刪除應(yīng)用,再重新啟動(dòng)手機(jī)呻顽,再安裝應(yīng)用雹顺,此時(shí)啟動(dòng)圖才更新成新的啟動(dòng)圖。
分析原因
蘋(píng)果為應(yīng)用提供了兩種設(shè)置啟動(dòng)圖的方式廊遍,LaunchScreen和LaunchImage嬉愧。iOS 8 以前的應(yīng)用不支持LaunchScreen。使用LaunchImage會(huì)不會(huì)出現(xiàn)這個(gè)問(wèn)題喉前,目前沒(méi)有試驗(yàn)過(guò)没酣,可能是沒(méi)有這個(gè)問(wèn)題的。現(xiàn)在只說(shuō)一下我使用LaunchScreen.storyboard的情況被饿。
在網(wǎng)上查了資料四康,使用LaunchScreen的情況下,出現(xiàn)啟動(dòng)圖不能更新狭握,可能是由于,系統(tǒng)緩存了啟動(dòng)圖的截屏疯溺,并且會(huì)根據(jù)啟動(dòng)圖的名字確定會(huì)不會(huì)刷新啟動(dòng)圖的緩存论颅。
目前已知的可行辦法是,啟動(dòng)圖不要放在Assets.xcassets里邊(放在Assets.xcassets里邊如果更改了啟動(dòng)圖Set的名字囱嫩,會(huì)出現(xiàn)啟動(dòng)的時(shí)候白屏)恃疯,啟動(dòng)圖放到外邊的文件夾下,并且每次更新啟動(dòng)圖的時(shí)候使用不同的名字墨闲,這樣每次更換啟動(dòng)圖后就今妄,啟動(dòng)的時(shí)候就會(huì)使用新的啟動(dòng)圖。
如果之前使用的是LaunchScreen鸳碧,之后換成LaunchImage盾鳞,那LaunchImage設(shè)置的啟動(dòng)圖一定是無(wú)效的,因?yàn)長(zhǎng)aunchScreen的優(yōu)先級(jí)高于LaunchImage瞻离,沒(méi)有什么好的解決辦法腾仅,除非刪應(yīng)用,重啟套利,重裝應(yīng)用推励。
結(jié)語(yǔ)
這個(gè)問(wèn)題應(yīng)該是蘋(píng)果的一個(gè)Bug導(dǎo)致應(yīng)用內(nèi)更新啟動(dòng)圖片后鹤耍,應(yīng)用啟動(dòng)時(shí)候不能及時(shí)更新啟動(dòng)圖。這一塊具體內(nèi)部的實(shí)現(xiàn)并不清楚验辞,不過(guò)好在找到了合適的解決辦法稿黄。