Xcode6和iOS 8以后,蘋(píng)果給開(kāi)發(fā)者新添加了一種配置啟動(dòng)圖的方式LaunchScreen.xib
声搁。
筆者覺(jué)得慷妙,這種方式的優(yōu)勢(shì)在于無(wú)需做多張啟動(dòng)圖進(jìn)行適配,LaunchImage需要美工做多張圖蜒秤,而LaunchScreen.xib可以自適應(yīng)布局,做一張圖就夠了亚斋。
不過(guò)作媚,筆者建議為了更好的適配,免除圖片拉伸造成的不好的效果帅刊,可以在Images.xcassets纸泡,添加一個(gè)命為Default的圖片集But,這種方式有個(gè)巨大的坑啊樓主現(xiàn)在還沒(méi)爬上來(lái)~
由于筆者接手的是別人的項(xiàng)目,啟動(dòng)圖也沒(méi)有更換過(guò)赖瞒,一直沒(méi)有動(dòng)過(guò)這塊女揭,也沒(méi)有太在意蚤假。最近由于有更換啟動(dòng)圖的需求,開(kāi)始著手搞啟動(dòng)圖這塊的內(nèi)容田绑。原來(lái)外包用的是LaunchScreen.xib這種方式勤哗,在改這一塊的時(shí)候,把這兩種方式都選了~然后掩驱,問(wèn)題出現(xiàn)了
關(guān)于啟動(dòng)圖黑屏
測(cè)試的時(shí)候發(fā)現(xiàn),有的時(shí)候處出現(xiàn)黑屏的現(xiàn)象冬竟,百度了一下欧穴,有人說(shuō)好像是兩種方式混用的結(jié)果。原來(lái)泵殴,iOS8以后的系統(tǒng)默認(rèn)LaunchScreen.xib方式涮帘,之前的系統(tǒng)選擇LaunchImage方式。然后我們就選擇了LaunchImage這種更加穩(wěn)定可靠的方式笑诅。啟動(dòng)圖黑屏的問(wèn)題果然不存在了
安裝過(guò)舊版本的App啟動(dòng)圖無(wú)法更換
由于筆者的手機(jī)頻繁的刪除應(yīng)用调缨,沒(méi)有發(fā)現(xiàn)這個(gè)問(wèn)題。產(chǎn)品經(jīng)理在安裝測(cè)試版的App后出現(xiàn)啟動(dòng)圖沒(méi)有更換的問(wèn)題~刪了應(yīng)用重裝也不行
So吆你,問(wèn)題來(lái)了~What happend?
筆者開(kāi)始了漫長(zhǎng)的測(cè)試~~~
- 先用 LaunchScreen.xib方式添加啟動(dòng)圖A弦叶,運(yùn)行工程,App啟動(dòng)圖為A妇多,然后更換啟動(dòng)圖為B
- 啟動(dòng)圖添加方式更換為L(zhǎng)aunchImage方式伤哺,運(yùn)行工程,App啟動(dòng)圖為A
- 啟動(dòng)圖添加方式更換為L(zhǎng)aunchImage方式者祖,刪掉App立莉,運(yùn)行工程,App啟動(dòng)圖為B
- 啟動(dòng)圖添加方式不更換七问,運(yùn)行工程蜓耻,App啟動(dòng)圖為A
- 啟動(dòng)圖添加方式不更換,刪掉App械巡,運(yùn)行工程刹淌,APP啟動(dòng)圖為A
- 啟動(dòng)圖添加方式不更換,重啟手機(jī)坟比,運(yùn)行工程芦鳍,APP啟動(dòng)圖為A
- 啟動(dòng)圖添加方式不更換,刪掉App葛账,重啟手機(jī)柠衅,運(yùn)行工程,APP啟動(dòng)圖為B
- 先用 LaunchImage方式添加啟動(dòng)圖A籍琳,運(yùn)行工程菲宴,App啟動(dòng)圖為A贷祈,然后更換啟動(dòng)圖為B
- 啟動(dòng)圖添加方式不更換,運(yùn)行工程喝峦,App啟動(dòng)圖為B
- 啟動(dòng)圖添加方式更換為 LaunchScreen.xib势誊,運(yùn)行工程,App啟動(dòng)圖為B
- LaunchImage與LaunchScreen.xib混用沒(méi)有測(cè)試谣蠢,因?yàn)樵趇OS8系統(tǒng)以后粟耻,默認(rèn)使用LaunchScreen.xib,效果和第一種是一樣的眉踱,感興趣的讀者可以測(cè)試一下
為什么用 LaunchScreen.xib方式添加啟動(dòng)圖會(huì)出現(xiàn)上面的效果挤忙?筆者做了一些小小的測(cè)試
開(kāi)始筆者覺(jué)得,可能是使用xib方式谈喳,系統(tǒng)會(huì)在App沙盒保存一份啟動(dòng)圖册烈,就下載一個(gè)軟件iFunBox
安裝好,點(diǎn)擊應(yīng)用
這里我們可以看到婿禽,平時(shí)我們?cè)诔绦蚶锊僮鞯膸讉€(gè)文件夾
點(diǎn)擊Library
點(diǎn)擊Caches
點(diǎn)擊Snapshots,
果然找到了啟動(dòng)圖
而LaunchImage模式赏僧,不會(huì)生成這張圖片
筆者原本以為,這張圖就是App每次啟動(dòng)時(shí)要拿的圖扭倾。在LaunchScreen.xib模式下淀零,就刪掉了這張圖,重新運(yùn)行工程吆录。然而窑滞,筆者期待的景象并未發(fā)生,即便更換成啟動(dòng)圖B恢筝,App的啟動(dòng)圖仍然為A
哀卫,同時(shí)在這個(gè)文件夾下,啟動(dòng)圖A又出現(xiàn)了撬槽。so此改,這張圖并不是App啟動(dòng)時(shí)調(diào)用的。其實(shí)侄柔,出現(xiàn)啟動(dòng)圖添加方式不更換共啃,刪掉App,運(yùn)行工程暂题,APP啟動(dòng)圖為A
這種結(jié)果時(shí)移剪,就證明筆者的思路是錯(cuò)的,因?yàn)榇藭r(shí)這個(gè)文件夾已經(jīng)不存在了薪者,說(shuō)明App啟動(dòng)后啟動(dòng)圖在App沙盒之外進(jìn)行了保存纵苛,即保存在了iOS系統(tǒng)本身的某些緩存文件下。
啟動(dòng)圖添加方式不更換,刪掉App攻人,重啟手機(jī)取试,運(yùn)行工程,APP啟動(dòng)圖為B
怀吻,則證明瞬浓,iOS系統(tǒng)緩存的這些文件,只有重啟手機(jī)才能刪掉蓬坡,不重啟的話猿棉,這些信息在App重新安裝的時(shí)候,依然可用屑咳,具體保存在哪铺根,筆者真心沒(méi)找到~
所以,LaunchScreen.xib這種添加啟動(dòng)圖的方式乔宿,建議讀者不要使用,不如讀者如果解決這種問(wèn)題建議通知筆者跪謝
總結(jié):在LaunchScreen.xib模式下访雪,Snapshots文件夾下的這張圖片每次在App啟動(dòng)的時(shí)候都會(huì)更新详瑞。因?yàn)檫@張圖片是系統(tǒng)對(duì)啟動(dòng)圖進(jìn)行截屏得到的,但是App啟動(dòng)時(shí)調(diào)用的那張圖片是在App首次使用LaunchScreen.xib模式時(shí)用的那張圖片臣缀,系統(tǒng)對(duì)這張圖片進(jìn)行了保存坝橡,只要這張圖片存在,無(wú)論采用什么模式精置,都會(huì)調(diào)用這張圖片计寇。而能夠刪除這張圖片的唯一方式,就是刪掉程序脂倦,重啟手機(jī)番宁。
2016-03-20更新
問(wèn)題解決了:筆者將LaunchScreen.xib更換成了LaunchScreen.storyboard就能進(jìn)行更換了。而且LaunchScreen.storyboard創(chuàng)建的啟動(dòng)圖是可以隨時(shí)更換的赖阻〉海可能是因?yàn)閄code7以后,蘋(píng)果主推LaunchScreen.storyboard而取代了LaunchScreen.xib火欧。最重要的是棋电,一定要記得更換圖片的名字,千萬(wàn)不要使用一樣的名字根苇侵,否則還是更換不了
赶盔。我原來(lái)使用的都是Default.png,更換了就好了。