iOS開發(fā)時如何使用 Launch Screen Storyboard

靜態(tài)啟動圖片
啟動圖片是iOS加載App的時候系統(tǒng)響應(yīng)的直觀呈現(xiàn)。近幾年作煌,隨著屏幕尺寸的增多清蚀,制作相應(yīng)的靜態(tài)圖片
就變成一件十分讓人頭疼的事。在下面递瑰,我列舉了一些 啟動圖片的尺寸(尺寸包括狀態(tài)條區(qū)域)祟牲。為了簡潔,我省略了橫屏的版本:
iPad 2 and iPad mini (@1x): 768 x 1024
iPad and iPad mini (retina @2x): 1536 x 2048
iPhone 4s (retina @2x) 640 x 960
iPhone 5 (@2x): 640 x 1136
iPhone 6 (@2x): 750 x 1334
iPhone 6 Plus (@3x): 1242 x 2208

好消息是抖部,在Xcode 6 and iOS 8允許使用NIB或storyboard launch screen 文件说贝。利用auto layout 和size classes的優(yōu)勢,一個單獨的NIB或storyboard文件在runtime時可以自動的去創(chuàng)建啟動圖片集慎颗。這就意味著乡恕,你想在全屏模式下支持iPhone 6 和 iPhone 6 Plus的話就無需提供匹配的的啟動圖集或者如上面列舉出現(xiàn)來的不同尺寸的靜態(tài)圖片
( 26-Dec-2014 更新: 一定要搞清楚,支持iPhone 6 and iPhone 6 Plus 俯萎,要求你提供啟動圖片集合傲宜,可以是靜態(tài)啟動圖集
(static launch images),也可以是啟動圖布局文件
( launch screen file)).

使用啟動圖片文件
Xcode6在創(chuàng)建新工程時默認(rèn)添加了一個LaunchScreen.xib文件夫啊。對一個已經(jīng)存在的工程可以用Launch Screen 模板創(chuàng)建一個新的文件函卒。(譯者注:在Xcode7里,默認(rèn)添加的是LaunchScreen.storyboard文件撇眯,筆者因此遇到過一個大坑LaunchImage和LaunchScreen.xib混用出現(xiàn)的坑

這一步將會在工程中添加一個NIB文件报嵌,你可以在初始化的啟動屏上添加單個視圖或者視圖控制器。如果你有多個視圖熊榛,那么你則需要放棄Launch Screen模板锚国,應(yīng)該添加一個storyboard。然后在target的工程設(shè)置里面指定啟動圖來源:


2014-12-24-005.png

這一步將會把 鍵 Launch screen interface file base name(UILaunchStoryboardName)加到應(yīng)用的plist 文件中


2014-12-24-003.png

接下來玄坦,你可以在Interface Builder對啟動視圖進行布局血筑,使autolayout和size classes作為必選項,為不同的屏幕創(chuàng)建匹配的圖片。Xcode模板提供的風(fēng)格豺总,只是對app的名稱和所有權(quán)進行了布局梆砸,這并不是一個最理想的范例。在你添加自己的視圖之前园欣,或許你想刪掉它們:


2014-12-24-004.png

你可以在Xcode中預(yù)覽storyboard,或者在模擬器和真機上進行測試帖世。盡管啟動屏的展示的時間很短,但是你會發(fā)現(xiàn)沸枯,如果在App delegate的application:didFinishLaunchingWithOptions:方法中添加斷點是有用的
Launch Screen 的局限性
系統(tǒng)在啟動app之前裝載啟動文件日矫,在這個過程中可能對app包含的一些文件產(chǎn)生限制(一些限制可能迫使你回退到 使用靜態(tài)圖片集
):
app還沒裝載完畢,一些視圖的層級結(jié)構(gòu)還不存在绑榴,系統(tǒng)不能調(diào)用app中任何自定義的視圖控制器去啟動代碼哪轿。
你僅僅能使用標(biāo)準(zhǔn)的UIKit類,所以你可以用UIView或者UIViewController,自定義的子類則不可以翔怎。如果你嘗試著去設(shè)置子類窃诉,將會得到一個“配置無效”的錯誤。
啟動文件僅僅能夠用基礎(chǔ)的UIKit視圖赤套,像UIImageView 和UILabel飘痛,不能使用 UIWebView。
如果你用了storyboard容握,你可以指定多個視圖控制器宣脉,但是仍舊有一些限制。例如剔氏,你可以在navagation或者tab bar controller嵌入幾個視圖控制器塑猖,但是一些更復(fù)雜的類,像UISplitViewController 并不起作用 (至少現(xiàn)在如此).
本地化(譯者注:我理解的是自己創(chuàng)建的谈跛,而非采用模板)啟動圖布局文件
目前看起來并沒有什么不好的影響羊苟。也許,你采用的最基本的本地化啟動圖布局文件
可能是不在啟動圖上顯示文字感憾。
你不能為iPhone和iPad指定不同的啟動文件蜡励。因為auto layout 和size classes的局限性,如果這些設(shè)備有著顯著不同的界面吹菱,就會出現(xiàn)問題巍虫。

如果你正在ios7系統(tǒng)上進行開發(fā)彭则,那么你仍舊需要包含靜態(tài)啟動圖集
鳍刷。你可以包含啟動圖布局文件
和靜態(tài)啟動圖集
。那么俯抖,運行ios8系統(tǒng)的iPhone6將會使用啟動圖布局文件
输瓜,而運行ios7系統(tǒng)的設(shè)備則回退使用靜態(tài)啟動圖集
摹察。
Split View Controllers
如果你的根視圖控制器是SplitViewControllers,至少在iOS8.1系統(tǒng)买喧,你并沒有太多的選擇姨俩。如果你將SplitViewControllers添加到launch screen storyboard,它不會被裝載北戏。由于在iOS8.1中SplitViewControllers復(fù)雜度的增加负芋,我懷疑在后續(xù)版本中也不會被支持。
除了回退去使用靜態(tài)啟動圖集
嗜愈,唯一能夠選擇的方式看起來只有放棄 分屏使用旧蛾。例如,考慮一下接下來使用SplitViewController的iPhone和ipad的啟動屏蠕嫁。在iphone(寬度較窄)設(shè)備上锨天,初始化的屏幕僅展示主視圖控制器(一個嵌入在Navigation Controller里的tableview controller)


2014-12-24-iphone.png

在ipad(常規(guī)寬度)設(shè)備上,初始化后的啟動屏在分屏控制器里展示的master and detail view controllers


2014-12-24-ipad.png

這是一種常見的啟動方式剃毒,但是在這種情況下病袄,沒有好的方法使用啟動圖布局文件
.我的建議,即我能得到的最接近的方式是忽略啟動屏赘阀,用一個嵌套在navigation controller的view controller 作為啟動屏


2014-12-24-006.png

盡管這種方式遠(yuǎn)遠(yuǎn)沒有達(dá)到完美的地步益缠,但是在適配(除了ipad分屏)所有設(shè)備用戶初始化界面 方面多多少少做了貢獻。呈現(xiàn)給用戶的靜態(tài)啟動圖集
雖然效果足夠好基公,但是自己不得不做出判斷左刽。
Runtime Generation (added 28-Dec-2014)
盡管蘋果文檔中并沒有清楚地說明,但需要的啟動圖片在runtime時被生成了酌媒。在WWDC 2014Platform State of the Union上被簡短的提到過欠痴。你可以通過App在真機或者模擬器上生成的文件夾證實。被特定設(shè)備需要的啟動圖被緩存在Library/Caches/LaunchImages秒咨。下面的截屏顯示了iPad Air 2生成的啟動圖片

2014-12-28-001.png

作為對比喇辽,下面的截屏顯示了iPhone 6 Plus生成的啟動圖片


2014-12-28-002.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雨席,一起剝皮案震驚了整個濱河市菩咨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陡厘,老刑警劉巖抽米,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異糙置,居然都是意外死亡云茸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門谤饭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來标捺,“玉大人懊纳,你說我怎么就攤上這事⊥鋈荩” “怎么了嗤疯?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長闺兢。 經(jīng)常有香客問我茂缚,道長,這世上最難降的妖魔是什么屋谭? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任阱佛,我火速辦了婚禮,結(jié)果婚禮上戴而,老公的妹妹穿的比我還像新娘凑术。我一直安慰自己,他們只是感情好所意,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布淮逊。 她就那樣靜靜地躺著,像睡著了一般扶踊。 火紅的嫁衣襯著肌膚如雪泄鹏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天秧耗,我揣著相機與錄音备籽,去河邊找鬼。 笑死分井,一個胖子當(dāng)著我的面吹牛车猬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尺锚,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼珠闰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瘫辩?” 一聲冷哼從身側(cè)響起伏嗜,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伐厌,沒想到半個月后承绸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡挣轨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年军熏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刃唐。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡羞迷,死狀恐怖界轩,靈堂內(nèi)的尸體忽然破棺而出画饥,到底是詐尸還是另有隱情衔瓮,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布抖甘,位于F島的核電站热鞍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏衔彻。R本人自食惡果不足惜薇宠,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望艰额。 院中可真熱鬧澄港,春花似錦、人聲如沸柄沮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祖搓。三九已至狱意,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拯欧,已是汗流浹背详囤。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留镐作,地道東北人藏姐。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像该贾,于是被迫代替她去往敵國和親包各。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容