非常に高速にロードされる単純な iPhone アプリケーションを使用しているため、スプラッシュ スクリーンはほんの一瞬しか表示されません。スプラッシュ スクリーンの表示時間を制御する方法はありますか? 私は周りを検索しましたが、うまくいくと思われるものは何も見つかりませんでした。スプラッシュ画像でサブビューを作成する必要がありますか? 表示時間を制御し、サブビューとメインビューを切り替えるにはどうすればよいですか?
4 に答える
ここで表明された見解や、デフォルトの画面を「乱用」してはならない理由に関する他の質問に同意しますが、この効果を達成するのは非常に簡単なようです。
起動するときは、スプラッシュスクリーンとまったく同じように見えるビューを表示し、を使用しNSTimer
てそれを閉じます。本当に簡単です。
// viewDidLoad
[self performSelector:@selector(dismiss)
withObject:nil
afterDelay:yourTimeIntervalInSectons];
// dismiss
[self performSegueWithIdentifier:@"ID" sender:nil];
ただし、アプリケーションがアクティブになるたびにスプラッシュ画面が表示されないようにしてください。私はかつて、私のアプリのコンテキストで非常に具体的で有用な目的でこれを行いましたが、Appleはそれを拒否しました。ねえ、彼らは私にそれを説明するために土曜日の夜に私に電話さえしました。
ここで述べたことにはすべて同意しますが、タイマー付きのスプラッシュ スクリーンも 1 回実装する必要があったため、コードは次のとおりです。
- (void)showSplashWithDuration:(CGFloat)duration
{
// add splash screen subview ...
UIImage *image = [UIImage imageNamed:@"Default.png"];
UIImageView *splash = [[UIImageView alloc] initWithImage:image];
splash.frame = self.window.bounds;
splash.autoresizingMask = UIViewAutoresizingNone;
[self.window addSubview:splash];
// block thread, so splash will be displayed for duration ...
CGFloat fade_duration = (duration >= 0.5f) ? 0.5f : 0.0f;
[NSThread sleepForTimeInterval:duration - fade_duration];
// animate fade out and remove splash from superview ...
[UIView animateWithDuration:fade_duration animations:^ {
splash.alpha = 0.0f;
} completion:^ (BOOL finished) {
[splash removeFromSuperview];
}];
}
AppDelegate の-applicationDidFinishLaunching:withOptions:
メソッドのどこかで関数を呼び出すだけです
@ asgeo1:コードは私にとってはうまく機能します(いくつかのプロジェクトで同様のコードを使用しました)。便宜上、私の Dropbox にサンプル プロジェクトを追加しました。
さて、これを行うべきではないという上記の投稿に完全に同意しますが、それでもしたい場合は、以下を に追加することで非常に簡単に実現できますAppDelegate.m
。
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
sleep(2);
}
「2」はスリープする秒数を表します。「.5」などの値を受け入れます