12


私が開発するすべてのアプリで何かが起こることに気づきました。通常は問題になりませんが、この特定のアプリでは、バグでさえあれば、それを「修正」できれば素晴らしいと思います。

問題を再現する手順:

  • アプリを起動すると、スプラッシュ画面が約1秒間表示されます。3秒でアプリが起動します。
  • ホームボタンを押すと、アプリがバックグラウンドに移動します。
  • アプリをバックグラウンドから戻し(ホーム画面をダブルクリックして選択)、スプラッシュを0.5秒ほど表示すると、アプリが元に戻ります。

バックグラウンドから戻る途中で0.5秒間ポップアップするスプラッシュ画面を取り除くことは可能ですか?この特定のアプリにとっては本当に問題です。

4

5 に答える 5

12

この質問が「回答済み」とマークされていることは知っていますが、私の場合は回答が正しくなかったので、共有したいと思います。

私は最初、上記の最も正確な答えはQueyJohからのものであるという結論に達しました-「これはiOSによって処理されるものです...短い答え:それはあなたの手に負えません」。

しかし、実験した後、ステータスバーを制御するinfo.plistファイルのエントリとして問題を見つけることができました。具体的には、「UIStatusBarHidden」と「UIStatusBarStyle」のエントリがありました。

これらのエントリをplistファイルから削除すると、アプリから切り替えて再び元に戻すときに、アプリがスプラッシュ画面を表示しなくなりました。

問題が解決しました。

マシュー

于 2012-11-29T19:45:53.533 に答える
10

まあ、どうやらこの質問はそもそもあまり賢くありませんでした:)この「問題」はシミュレータでのみ発生します。デバイス自体でデバッグする場合、期待どおりに機能します。

大丈夫です。助けてくれたみんなに感謝します!:)

于 2011-11-16T00:54:44.727 に答える
9

私の経験では、これはiOSによって処理されるものです(これに関するドキュメントを見たことがないので、経験を積んでいきます)。OSがアプリケーションの状態を適切かつ迅速に復元できる場合、その状態が復元されている間、以前の状態のスクリーンショットが表示されます。

ただし、アプリがまだ適切にバックグラウンドにない場合(タスクの高速切り替え中など)など、何かがプロセスを遅らせる場合、または他の予測可能なものが起動を遅らせる場合は、(スプラッシュ画面ではなく)スプラッシュ画面に戻ります。スクリーンショット)、ユーザーエクスペリエンスを容易にするため。

簡単な答え:それはあなたの手の届かないところにあります。

于 2012-07-12T02:40:10.413 に答える
0

スプラッシュ画面を表示するコードは、didFinishLaunchingWithOptionsメソッドのappdelegateにある必要があります。その場合は、アプリが実際に起動したときにのみ表示され、バックグラウンドから戻ったときには表示されません。

このようなものを使用してください(古いアニメーションコードを使用していることは知っていますが、必要に応じてブロックに更新できると確信しています)...

    splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)];
    splashView.image = [UIImage imageNamed:@"Default.png"];

    [myWindow addSubview:splashView];
    [myWindow bringSubviewToFront:splashView];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
    splashView.alpha = 0.0;
    [UIView commitAnimations];

次に、startupAnimationDone...というメソッドを作成します。

- (void)startupAnimationDone:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {

    [splashView removeFromSuperview];

    [splashView release];
}
于 2011-11-15T21:42:15.253 に答える
0

私もこの問題を抱えています、今私はそれを解決しました。理由はあなたがapplicationDidEnterBackgroundであまりにも多くのことをしたので、減らしてみてください。

于 2013-10-14T08:13:25.740 に答える