アプリを起動すると、すべてのアセットが初期化されるとすぐにLaunchScreen.xibが削除されます。
起動画面を1秒以上維持したい。
これを達成する方法はありますか?
ありがとうございました!
LaunchScreenストーリーボードを使用するビューコントローラーを作成し、applicationDidFinishLaunching
またはapplicationWillFinishLaunching
に表示して(アニメーション化しないで)、いつでも閉じることができます。
Appleは、アプリの起動にかなり時間がかかるように見えるため、ユーザーエクスペリエンスが低下し、一部のユーザーがアプリを削除する可能性があるため、これは推奨されません。
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
}
_
なしメインスレッドでスリープします。これを行うと、iOSが起動に時間がかかりすぎてアプリが強制終了する可能性があります
私はこれについて私の考えに欠けていると思いましたが、コメントで書きたかったのですが、それは多くの行を許可しません。多くのアプリ開発者がこれを実行したい(起動画面を遅らせた)のは、自社のアプリ/ゲームのブランドプレゼンスを構築したいためです。
そうは言っても、リックマディがコメントセクションで他の回答の1つで説明したように、起動画面はそのために設計されていません。起動画面の目的は、実際のデータが後ろに読み込まれている間(willAppearなど)に空のUIを表示することで、アプリが即座に実行されているとユーザーに感じさせることです。
したがって、多くの開発者が望んでいることを実現するために、AppleのHIGと一致しながら、次のことができます。
- Apple HIG。
- メイン画面のロード時に、ブランドの「イントロ」を示す別のVCをロードします。これがONCEでのみ実行されることを確認してください(NSUserDefaultsの単純なフラグでうまくいくはずです)。
- 長い「イントロ」の場合は、ユーザーがこれをスキップできるようにする必要があります。
同じ「イントロ」VCは、「イントロの表示」ボタンをどこかに(おそらくページ内に)タップすることでユーザーが利用できるはずです。
シンプルにしたい場合は、NSThread
を使用できます。
[NSThread sleepForTimeInterval:(NSTimeInterval)];
このコードをapplicationDidFinishLaunching
メソッドの最初の行に挿入できます。
たとえば、default.pngを1.0秒間表示します。
- (void) applicationDidFinishLaunching:(UIApplication*)application
{
[NSThread sleepForTimeInterval:1.0];
}
スプラッシュスクリーンを1.0秒間停止します。
画面を保持するために、一定の時間間隔でスレッドをスリープモードにすることができますが、その時間は何のアクションも実行できません
- (void) applicationDidFinishLaunching:(UIApplication*)application{[NSThread sleepForTimeInterval:5.0];}