Xcode スプラッシュ画面を作成する - shirajira/family-account-ios GitHub Wiki

Xcode スプラッシュ画面を作成する

スプラッシュとは

アプリ起動の際に表示される画面である。
一般に,アプリのブランドを認知させる目的でロゴ画像などを表示することが多い。

iOS アプリでは,主に二種類の表示方法がある。

実装方法

方法 1: 標準で用意されているものを使う

本稿では主にこの方法について扱う。

新規作成時にバンドルされていた LaunchScreen.storyboard にスプラッシュ画面を作成すればよい。
あとはシステムが勝手に表示してくれる。

LaunchScreen.storyboard はシステムによりキャッシュされるため,非常に高速に表示することができるという特性もある。

ただし,初期の設定では表示時間は一瞬である。
これを延長するには AppDelegate.swift 内に以下の記述を追加すればよい。(記述は一部抜粋)

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        // スプラッシュの表示時間を変更
        sleep(1)

        return true
    }

}

上記例では 1sec のスリープを入れてアプリの Main Interface が起動するのを遅延させている。
1sec 未満のスリープを実装したければ usleep() などの採用を検討してください。

(個人的には 500ms 程度がいいと思う)

関連:
Swift スリープ

注意事項

この Storyboard に紐づく ViewController は存在しないため,スプラッシュ表示中の処理は実装することができない。
ローカライズすることもできない。

スプラッシュ表示中に何か動的な処理を加えたい場合,方法 2 を検討してください。

方法 2: 自作する

任意の Storyboard にスプラッシュを実装し,それを Main Interface に設定する。
この方法であれば Storyboard と ViewController をそれぞれ定義できるため,独自の処理を加えることができる。

その代わり,スプラッシュ表示後の画面遷移などは自前で実装する必要がある。
また,システムによりキャッシュされないので起動に少し時間がかかる可能性がある。

アプリのコンテキストやシステム要件に応じて,最適な方法を採用してください。