web-dev-qa-db-ja.com

起動画面でコードを実行する

Xcodeでは、Interface Builderを介して.xibファイルに起動画面を作成できます。通常のView Controllerのように、xibでいくつかのコードを実行することは可能ですか?アプリの起動中に異なるテキスト/画像/などを設定できると便利です。

31
Dmitriy

いいえ、できません。

起動画面が表示されているとき、アプリは読み込み状態になります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsでさえ、起動画面が表示されている間は完全には実行されません。

したがって、アプリにアクセスできないため、この時点でコードを実行できないことは明らかです。

42
Midhun MP

ここで同じことをしようとしていました。 :)

「今日はよさそうだ」、「今日は金曜日、素晴らしい日」など、アプリを起動するたびに少し動的な挨拶テキストと画像を作成するアプリのいくつかが本当に好きでした。とてもかわいい。

私はいくつかの検索を行いましたが、その方法は以下のとおりです(私のコードはXcode 7で、launchscreen.xibファイルがあります)

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var customizedLaunchScreenView: UIView?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        // Override point for customization after application launch.
        application.statusBarHidden = true

        // customized launch screen
        if let window = self.window {
            self.customizedLaunchScreenView = UIView(frame: window.bounds)
            self.customizedLaunchScreenView?.backgroundColor = UIColor.greenColor()

            self.window?.makeKeyAndVisible()
            self.window?.addSubview(self.customizedLaunchScreenView!)
            self.window?.bringSubviewToFront(self.customizedLaunchScreenView!)
            UIView.animateWithDuration(1, delay: 2, options: .CurveEaseOut,
                                       animations: { () -> Void in
                                        self.customizedLaunchScreenView?.alpha = 0 },
                                       completion: { _ in
                                        self.customizedLaunchScreenView?.removeFromSuperview() })
        }

        return true
    }

// other stuff ...

}

customizedLaunchScreenViewここで、表示したいこと、テキスト、画像、アニメーションなどを実行します。

起動の最後に、アルファ値の変更を使用してこのカスタマイズされたUIViewをフェードアウトし、完全に削除します。

いかがですか?絶対に大好きです!

それが役に立てば幸い。

5
RainCast

私もこれを達成しようとしていました。私は次のことを試しました、それは数秒の遅延を与えますが、私にとってはうまくいきます。

  • プロジェクト設定で起動画面を作成および設定します。
  • カスタムクラス(SplashViewController)でビューコントローラーを作成し、ストーリーボードで開始ビューコントローラーに設定します。
  • コンテナビューを追加して、フルスクリーンに設定します。
  • 埋め込みセグエをStoryboard Referenceに設定します。
  • Storyboard Referenceを選択し、属性インスペクターからStoryBoardプロパティで起動画面を設定します。
  • SplashViewControllerでやりたいこと(アニメーションやセッションチェックなど)を行い、完了したらセグエを実行します。

それが役に立てば幸い!

0
Bilal Ahmad