iOS 啟動頁多語言詳解
iOS 啟動頁多語言
啟動頁適配多語言, 想必很多 App 都有類似的需求。但是之前嘗試過程中, 發現 “多語言” 的那幾種實現方式, 在歡迎頁面上都不適應, 直到遇到了 UILaunchImages
~ 下文將詳細描述如何?啟動頁多語言。
傳統多語言設定
說起多語言, 我們無非這樣實現:
為 App 添加多語言支援。
添加對應的配置, 資源。 比如:
文本:
圖片:
使用對應資源, 比如:
label.text = NSLocalizedString(@"多語言", nil);
再麻煩一點, 就是xib, storyboard的多語言的。 但是原理一樣, 這樣的方式都能實現多語言支援。So, 就是這麼簡單~
然而, 啟動頁貌似不吃這套 ,,,
啟動頁設定
先說說我們如何設定啟動頁吧。
Assets.xcassets
這玩意引入之前, 我們是對啟動頁圖片按規範命名, 比如 Default, -568h, @2x, @3x 之類的, 讓系統協助我們自動判斷對應的啟動頁圖片。
Assets.xcassets
之後, 我們都了一種選擇, 可以直接拖拽圖片到 LaunchImage
中, 並且圖片命名也沒那麼多要求。
再之後, 多了 LaunchScreen.storyboard
, 意味著我們有了更多的選擇, 可以做更多的事情, 把它當做一個xib, 拖拽相關控制項上去就好~
方式很多, 是否意味著實現多語言的辦法也很多 ?
然而並不是,,
不論是對圖片
進行多語言, 還是 LaunchScreen.storyboard
多語言, 發現啟動頁始終沒有跟著系統語言變, 血崩..
當然, 辦法並不是沒有, 只是沒找到對的而已~ 下面介紹如何通過UILaunchImages
實現啟動頁多語言。
PS: 感覺 LaunchScreen.storyboard 是能做到多語言支援的, 難道是我實現過程中有問題 ?
UILaunchImages
先看一下官方文檔:
UILaunchImages (Array - iOS) Explicitly specifies the launch images to use for the app. This key contains an array of dictionaries. Each dictionary contains detailed information about a single launch image and how it is used. Xcode fills in the value of each dictionary based on information you provide in your project settings.
顯然, 我們可以通過設定 UILaunchImages
來配置啟動圖片。
至於 UILaunchImages
的幾個 Key , 簡單描述如下:
UILaunchImageName
(required) 啟動頁資源名稱
UILaunchImageMinimumOSVersion
(required) 啟動頁支援的最低版本
UILaunchImageSize
啟動頁尺寸
UILaunchImageOrientation
啟動頁方向
?
代表什麼, 都比較簡單, 具體可以參考官方文檔~ [ UILaunchImages ]
用這種方式配置啟動頁也十分簡單, 具體步驟:
取消啟動頁使用的 Asset Catalog
在Info.plist 中添加UILaunchImages項<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">UILaunchImages UILaunchImageName LaunchImage UILaunchImageMinimumOSVersion 7.0 UILaunchImageSize {320, 480} UILaunchImageOrientation Portrait UILaunchImageName LaunchImage-568h UILaunchImageMinimumOSVersion 7.0 UILaunchImageSize {320, 568} UILaunchImageOrientation Portrait UILaunchImageName LaunchImage-667h UILaunchImageMinimumOSVersion 8.0 UILaunchImageSize {375, 667} UILaunchImageOrientation Portrait UILaunchImageName LaunchImage-736h UILaunchImageMinimumOSVersion 8.0 UILaunchImageSize {414, 736} UILaunchImageOrientation Portrait
添加對應的啟動頁資源
?
如此, 即可完成 啟動頁 多語言的適配, 不信你就試試唄~
PS: 這裡, 說明一點。 啟動頁只會保留一份, 也就是說, 你第一次載入完以後, 切換了語言, 再重新開啟App, 它的啟動頁不會跟著更新的。 這也符合蘋果的使用者互動指引。
如果你想要動態修改啟動頁面圖LaunchImage, 抱歉!根據蘋果的使用者互動指引,該頁面是在程式載入時顯示的,不建議動態修改.
正確的做法一般都是用固定的圖片做啟動頁面圖,在啟動頁面結束之後做任何你想做的事.
如果真想動態修改啟動頁面,啟動頁面是固定的名字,可以在程式執行之後強制把頁面替換掉,不過這樣APP可能會被拒.
該怎麼設定一個動態啟動圖呢?在啟動圖結束的時候,用一個View來展示你的動圖,記得placeHolder設定為和你的LaunchImage的圖片一樣就行,這樣就可以做出類似的效果了