2
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

iOSのスプラッシュスクリーン(LaunchImage)の多言語化

スプラッシュスクリーンをローカライズしようとして色々試して最終的にうまくいった方法のメモ。
丸1日試行錯誤した。。。
iOS10で動作確認済み。

ちなみに下記のURLの方法はiOSのバージョンが古いのかうまくいかなかった。
http://www.upquark.co.jp/archives/1561
http://source.hatenadiary.jp/entry/2014/06/19/101629

1. アプリが対応する端末だけ、それぞれのサイズの Default.png の各画像を用意する。

  • Default.png (320 x 480)
  • Default@2x.png (640 x 960)
  • Default-568h@2x.png (640 x 1136)
  • Default-667h@2x.png (750 x 1334)
  • Default-736h@3x.png (1242 x 2208)
  • Default-Portrait.png (768 x 1024) iPad用
  • Default-Landscape.png (1024 x 768) iPad用
  • Default-Portrait@2x.png (2048 x 2732) iPad Pro用
  • Default-Landscape@2x.png (2732 x 2048) iPad Pro用

2. Info.plist を直接エディタで開き、下記を対応する言語分追加する

すでに記述があればスキップ。

    <key>CFBundleLocalizations</key>
    <array>
        <string>ja</string>
        <string>en</string>
    </array>

3. それぞれの画像ファイルをローカライズする

Xcode上に1の画像ファイルを追加し(場所はどこでも良さげ)、選択してから、右カラムの中のLocalizeボタンで全てローカライズする。
対応する言語全てにチェックを入れる。

4. Info.plist ファイルを直接エディタで開き、下記を追加する。

対応する端末、しない端末、OSバージョン、端末の向き等あれば適宜追加・編集する。

    <key>UILaunchImages</key>
    <array>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default</string>
            <key>UILaunchImageOrientation</key>
            <string>Portrait</string>
            <key>UILaunchImageSize</key>
            <string>{320, 480}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-568h</string>
            <key>UILaunchImageOrientation</key>
            <string>Portrait</string>
            <key>UILaunchImageSize</key>
            <string>{320, 568}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-667h</string>
            <key>UILaunchImageOrientation</key>
            <string>Portrait</string>
            <key>UILaunchImageSize</key>
            <string>{375, 667}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-736h</string>
            <key>UILaunchImageOrientation</key>
            <string>Portrait</string>
            <key>UILaunchImageSize</key>
            <string>{414, 736}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-Portrait</string>
            <key>UILaunchImageOrientation</key>
            <string>Portrait</string>
            <key>UILaunchImageSize</key>
            <string>{768, 1024}</string>
        </dict>
        <dict>
            <key>UILaunchImageMinimumOSVersion</key>
            <string>7.0</string>
            <key>UILaunchImageName</key>
            <string>Default-Landscape</string>
            <key>UILaunchImageOrientation</key>
            <string>Landscape</string>
            <key>UILaunchImageSize</key>
            <string>{768, 1024}</string>
        </dict>
    </array>

これでできているはず。
ちなみに一度スプラッシュを表示させると、iPhoneの設定より言語を変更してもキャッシュが残ってスプラッシュは変更されない。アプリを再インストールすると変更される。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?