web-dev-qa-db-ja.com

iOS:起動画面を遅らせる方法は?

アプリを起動すると、すべてのアセットが初期化されるとすぐにLaunchScreen.xibが削除されます。

起動画面を1秒以上維持したい。

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

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

15
ishahak

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

Appleは、アプリの起動にかなり時間がかかるように見えるため、ユーザーエクスペリエンスが低下し、一部のユーザーがアプリを削除する可能性があるため、これは推奨されません。

23
EmilioPelaez

Swift 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
}
_
14
Xcodian Solangi

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

9
Xcoder

私はこれについて私の考えに欠けていると思いましたが、コメントで書きたかったのですが、それは多くの行を許可しません。多くのアプリ開発者がこれを実行したい(起動画面を遅らせた)のは、自社のアプリ/ゲームのブランドプレゼンスを構築したいためです。

そうは言っても、リックマディがコメントセクションで他の回答の1つで説明したように、起動画面はそのために設計されていません。起動画面の目的は、実際のデータが後ろに読み込まれている間(willAppearなど)に空のUIを表示することで、アプリが即座に実行されているとユーザーに感じさせることです。

したがって、多くの開発者が望んでいることを実現するために、AppleのHIGと一致しながら、次のことができます。

  1. Apple HIG。
  2. メイン画面のロード時に、ブランドの「イントロ」を示す別のVCをロードします。これがONCEでのみ実行されることを確認してください(NSUserDefaultsの単純なフラグでうまくいくはずです)。
  3. 長い「イントロ」の場合は、ユーザーがこれをスキップできるようにする必要があります。

同じ「イントロ」VCは、「イントロの表示」ボタンをどこかに(おそらくページ内に)タップすることでユーザーが利用できるはずです。

2
GeneCode

シンプルにしたい場合は、NSThreadを使用できます。

[NSThread sleepForTimeInterval:(NSTimeInterval)];

このコードをapplicationDidFinishLaunchingメソッドの最初の行に挿入できます。

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

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

スプラッシュスクリーンを1.0秒間停止します。

1
iBhavin

画面を保持するために、一定の時間間隔でスレッドをスリープモードにすることができますが、その時間は何のアクションも実行できません

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