2016-01-27 45 views
5

アプリを起動すると、すべてのアセットが初期化されるとすぐにLaunchScreen.xibが削除されます。iOS:起動画面を遅らせる方法は?

起動画面を少なくとも1秒間維持したいです。

これを達成する方法はありますか?

ありがとうございました!

+1

これを再考。ユーザーはアプリを使用したいが、起動画面を凝視しない。 – rmaddy

+0

クレジット/ライセンスのスプラッシュ画面を表示する必要があるゲームやその他のエンターテイメントコンテンツに対しては、このアプローチを「予約する」ことしか推奨しません。それ以外の場合は、アプリをできるだけ早く起動するようにします。 –

答えて

13

LaunchScreenストーリーボードを使用し、applicationDidFinishLaunchingまたはapplicationWillFinishLaunchingにアニメーション化されていない表示コントローラーを作成し、必要に応じていつでも閉じることができます。

これは、あなたのアプリが起動に時間がかかりすぎるという印象を与えるため、これはAppleによって推奨されないことに注意してください。これはユーザーエクスペリエンスが悪く、ユーザーの一部がアプリケーションを削除する可能性があります。あなたはシンプルに行きたい場合は

+1

私はこの回答を受け入れていますが、それは私が望んでいたものではありません。私はAppleが最小時間の設定を許可することを望んでいた。ユーザは200ミリ秒間何かを見て幸せではなく、それが何かを理解する前に消えてしまったからだ。 – ishahak

+0

起動画面は内容を表示するように設計されていないので、 Appleは実際には、あなたの起動画面がコンテンツなしでアプリケーションのメインビューであることを反対に示唆しています。あなたのロゴをどこかに表示したい場合は、ファンシーな 'About'スクリーンを作ることができます。ここには、起動画面のAppleのHIGがあります。 https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/LaunchImages.html – EmilioPelaez

0

、あなたはNSThreadを使用することができます。

[NSThread sleepForTimeInterval:(NSTimeInterval)]; 

あなたはapplicationDidFinishLaunching方法の最初の行にこのコードを置くことができます。

たとえば、default.pngを1.0秒間表示します。

- (void) applicationDidFinishLaunching:(UIApplication*)application 
{ 
    [NSThread sleepForTimeInterval:1.0]; 
} 

1.0秒間スプラッシュ画面が停止します。

+4

**決して**メインスレッドでスリープします。これを実行すると、実際に起動するには時間がかかりすぎてiOSでアプリが強制終了される可能性があります。 – rmaddy

+0

これは1秒間ですが、スレッドには影響しません。 – iBhavin

+0

まだ間違っています。その時間は、何もしないで座っているだけでなく、アプリを動かすために使用する必要があります。 – rmaddy

2

私はこれについての私の考えのチップ、私はコメントを書いたかったが、多くの行を許可しません。私は、多くのアプリ開発者がこれをやりたがっていると考えています(ローンチ画面を遅らせる)というのは彼らの会社のためにアプリ/ゲームのブランドプレゼンスを構築したいからです。

Rick Maddyが他の回答の1つのコメントセクションで説明したように、起動画面はそれ用に設計されていません。起動画面の目的は、実際のデータが背面に表示されている間に空のUIを表示することで、アプリケーションが即座に実行されているように感じさせることです(willAppearなど)。

だから、多くの開発者が望むものを達成するために、インラインAppleのHIGでありながら、何を行うことができますすることです:アップルHIGによって意図したとおりにlaunchscreenで

  1. 表示UIテンプレート。
  2. メイン画面が表示されたら、ブランドの「紹介」を示す別のVCを読み込みます。これが一度だけ実行されていることを確認してください( の単純なフラグ、NSUserDefaultsがそのトリックを行うべきです)。
  3. 長い「イントロ」の場合、ユーザーはこれをスキップする必要があります。

同じ「イントロ」VCはどこか(多分についてのページで)「ビューイントロ」ボタンをタップすることで、ユーザに利用可能であるべきです。あなたには、いくつかの時間間隔でスリープモードのスレッドを送信することはできませんが、その時は何のいずれかのアクションがメインスレッドで

- (void) applicationDidFinishLaunching:(UIApplication*)application{[NSThread sleepForTimeInterval:5.0];} 
-1

。これを行うと、実際のiOSの起動に時間がかかりすぎてのためにアプリを殺すために引き起こす可能性が

+0

は、メインスレッドでスリープ状態にはなりませんが、これは答えではありません – tommybananas

1

決して睡眠を行うことができ、画面をホールドするため

2

スウィフト4アップデート

だけappdelegateクラスのdidfinishLauching....の方法でコード Thread.sleep(forTimeInterval: 3.0) の1行を書きます。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    Thread.sleep(forTimeInterval: 3.0) 
    // Override point for customization after application launch. 
    return true 
} 
関連する問題