ココアアプリの起動時にスプラッシュ画面を表示するには?
-
22-08-2019 - |
質問
私はココアベースのアプリケーションが起動している間、ユーザーにスプラッシュ画面(画像)を表示したいと思います。どのようにこれは可能でしょうか?
<時間>まずおかげでたくさん。私のアプリは、しばらく時間を実行しているので、私は、アプリの実行前にスプラッシュを表示したいです。私はその後、画像を内部ウィンドウを表示した場合、今どのようにアプリケーションを実行するには?どのアプリが示すスプラッシュの後に実行されていることを確認しますか?シーケンスを得るために行うには?
<時間>まず、どうもありがとうございました。そして、私はその後、applicationDidFinishLaunchingでそれを隠す、orderFrontを使用applicationWillFinishLaunching方法でウィンドウを表示:orderOutを使用し、今私は、なぜ、メインウィンドウを表示しないとアプリが終了することがわかりましたか?どのようにこの質問を毅然として行うには?ありがとう!
解決
ピーターの答えは、時にはそれが実用的な選択肢ではないですが、(あなたがをが速く起動するようにアプリケーションを書き直す必要があります)最終的には正しいが。例えば、後でアプリケーションにロードするコードは、起動時にロードすることを強制的に(例えばデータ収集アプリケーション)、時間がかかりすぎることがあります。あなたはスプラッシュ画面を表示することを決定した場合、最も簡単な方法は、アプリケーションデリゲートのapplicationWillFinishLaunching:
方法でそれを示すことです。アプリケーションでスプラッシュウィンドウを作成MainMenu.nibを、アプリのデリゲートは、そのウィンドウを参照するにコンセントを追加します。その後、applicationWillFinishLaunching:
で画面上のウィンドウを入れて、applicationDidFinishLaunching:
でそれを隠すことができます。あなたは(ステータス、プログレスバー、またはそのようで)スプラッシュ画面を更新したいので、もし、あなたがそれらの再描画イベントを自分で管理する必要があります、メインスレッドのNSRunLoopは、この時間の間に反復されていないことに注意してください。
ここでも、長い起動が必要であるか否かについては非常に難しいと思います。もしそうであれば、progessインジケータとスプラッシュ画面を示すことは、あなたのユーザーを借りて最小である。
他のヒント
なぜあなたは、ユーザーが嫌いですか?
真剣に、これをしません。ユーザーがあなたのアプリを使用するのを待つしないでください。アプリの起動ではなく、すぐに確認します。
(そして、あなたが答えを主張念のために:あなたは、ユーザーが十分な長待っていたと感じたときに、ウィンドウを非表示にし、その中に画像を持つウィンドウを表示)
ただ、画像と窓を設置し、あなたがあなたの打ち上げの初期化で行われたときにそれを閉じます。
バリーの答えは、上記のドキュメントベースのアプリケーションのために動作するようには思えません。 applicationWillFinishLaunching:
内のスプラッシュウィンドウを表示すると、ドキュメントウィンドウが作成されないように、アプリの起動シーケンスを妨げます。私はここのプロジェクト例をアップロードしました。 applicationWillFinishLaunching:
で、[_splashWindow orderFront:self ]
をコメントアウトし、ドキュメントウィンドウが出てくる。