LaunchImage和LaunchScreen.xib混用出現(xiàn)的坑

Xcode6和iOS 8以后,蘋果給開發(fā)者新添加了一種配置啟動圖的方式LaunchScreen.xib
。
筆者覺得,這種方式的優(yōu)勢在于無需做多張啟動圖進行適配,LaunchImage需要美工做多張圖,而LaunchScreen.xib可以自適應(yīng)布局,做一張圖就夠了。
不過,筆者建議為了更好的適配,免除圖片拉伸造成的不好的效果,可以在Images.xcassets,添加一個命為Default的圖片集But,這種方式有個巨大的坑啊樓主現(xiàn)在還沒爬上來~
由于筆者接手的是別人的項目,啟動圖也沒有更換過,一直沒有動過這塊,也沒有太在意。最近由于有更換啟動圖的需求,開始著手搞啟動圖這塊的內(nèi)容。原來外包用的是LaunchScreen.xib這種方式,在改這一塊的時候,把這兩種方式都選了~然后,問題出現(xiàn)了

啟動圖選擇方式

關(guān)于啟動圖黑屏
測試的時候發(fā)現(xiàn),有的時候處出現(xiàn)黑屏的現(xiàn)象,百度了一下,有人說好像是兩種方式混用的結(jié)果。原來,iOS8以后的系統(tǒng)默認LaunchScreen.xib方式,之前的系統(tǒng)選擇LaunchImage方式。然后我們就選擇了LaunchImage這種更加穩(wěn)定可靠的方式。啟動圖黑屏的問題果然不存在了
安裝過舊版本的App啟動圖無法更換
由于筆者的手機頻繁的刪除應(yīng)用,沒有發(fā)現(xiàn)這個問題。產(chǎn)品經(jīng)理在安裝測試版的App后出現(xiàn)啟動圖沒有更換的問題刪了應(yīng)用重裝也不行So,問題來了What happend?
筆者開始了漫長的測試~~~
先用 LaunchScreen.xib方式添加啟動圖A,運行工程,App啟動圖為A,然后更換啟動圖為B啟動圖添加方式更換為LaunchImage方式,運行工程,App啟動圖為A
啟動圖添加方式更換為LaunchImage方式,刪掉App,運行工程,App啟動圖為B
啟動圖添加方式不更換,運行工程,App啟動圖為A
啟動圖添加方式不更換,刪掉App,運行工程,APP啟動圖為A
啟動圖添加方式不更換,重啟手機,運行工程,APP啟動圖為A
啟動圖添加方式不更換,刪掉App,重啟手機,運行工程,APP啟動圖為B

先用 LaunchImage方式添加啟動圖A,運行工程,App啟動圖為A,然后更換啟動圖為B啟動圖添加方式不更換,運行工程,App啟動圖為B
啟動圖添加方式更換為 LaunchScreen.xib,運行工程,App啟動圖為B

LaunchImage與LaunchScreen.xib混用沒有測試,因為在iOS8系統(tǒng)以后,默認使用LaunchScreen.xib,效果和第一種是一樣的,感興趣的讀者可以測試一下

為什么用 LaunchScreen.xib方式添加啟動圖會出現(xiàn)上面的效果?筆者做了一些小小的測試
開始筆者覺得,可能是使用xib方式,系統(tǒng)會在App沙盒保存一份啟動圖,就下載一個軟件iFunBox
安裝好,點擊應(yīng)用

屏幕快照 2016-03-17 下午5.43.43.png

這里我們可以看到,平時我們在程序里操作的幾個文件夾


屏幕快照 2016-03-17 下午5.44.02.png

點擊Library


屏幕快照 2016-03-17 下午5.44.13.png

點擊Caches


屏幕快照 2016-03-17 下午5.44.23.png

點擊Snapshots,


屏幕快照 2016-03-17 下午5.44.35.png

果然找到了啟動圖


屏幕快照 2016-03-17 下午5.44.49.png

而LaunchImage模式,不會生成這張圖片
筆者原本以為,這張圖就是App每次啟動時要拿的圖。在LaunchScreen.xib模式下,就刪掉了這張圖,重新運行工程。然而,筆者期待的景象并未發(fā)生,即便更換成啟動圖B,App的啟動圖仍然為A
,同時在這個文件夾下,啟動圖A又出現(xiàn)了。so,這張圖并不是App啟動時調(diào)用的。其實,出現(xiàn)啟動圖添加方式不更換,刪掉App,運行工程,APP啟動圖為A
這種結(jié)果時,就證明筆者的思路是錯的,因為此時這個文件夾已經(jīng)不存在了,說明App啟動后啟動圖在App沙盒之外進行了保存,即保存在了iOS系統(tǒng)本身的某些緩存文件下。
啟動圖添加方式不更換,刪掉App,重啟手機,運行工程,APP啟動圖為B
,則證明,iOS系統(tǒng)緩存的這些文件,只有重啟手機才能刪掉,不重啟的話,這些信息在App重新安裝的時候,依然可用,具體保存在哪,筆者真心沒找到~
所以,LaunchScreen.xib這種添加啟動圖的方式,建議讀者不要使用,不如讀者如果解決這種問題建議通知筆者跪謝
總結(jié):在LaunchScreen.xib模式下,Snapshots文件夾下的這張圖片每次在App啟動的時候都會更新。因為這張圖片是系統(tǒng)對啟動圖進行截屏得到的,但是App啟動時調(diào)用的那張圖片是在App首次使用LaunchScreen.xib模式時用的那張圖片,系統(tǒng)對這張圖片進行了保存,只要這張圖片存在,無論采用什么模式,都會調(diào)用這張圖片。而能夠刪除這張圖片的唯一方式,就是刪掉程序,重啟手機。
2016-03-20更新
問題解決了:筆者將LaunchScreen.xib更換成了LaunchScreen.storyboard就能進行更換了。而且LaunchScreen.storyboard創(chuàng)建的啟動圖是可以隨時更換的??赡苁且驗閄code7以后,蘋果主推LaunchScreen.storyboard而取代了LaunchScreen.xib

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容