0

タブバーアプリケーションがあります。これが私のコードです

- (void)applicationDidFinishLaunching:(UIApplication *)application {
[application setStatusBarHidden:YES animated:NO];
[self showSplashView];
}
- (void)showSplashView {
//If i don't use black view it displays white screen thats look so bad...
   UIView* blackView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
blackView.backgroundColor = [UIColor blackColor];
[window addSubview:blackView]; // sends [blackView retain]
[blackView release];

splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    splashView.image = [UIImage imageNamed:@"MyImage.png"];
    [window addSubview:splashView];
    [window bringSubviewToFront:splashView];
    [UIView beginAnimations:nil context:nil ];
[UIView setAnimationDelay:5.0];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:window cache:YES];
   [UIView setAnimationDelegate:self];
   [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:) ];
   splashView.alpha = 0.0;
   splashView.frame = CGRectMake(-60, -60, 440, 600);

   [UIView commitAnimations];

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

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];
UIView* blackView = [[window subviews] objectAtIndex:0];
    [blackView removeFromSuperview];
    [splashView removeFromSuperview];
    [splashView release];
[window addSubview:tabBarController.view];
[window makeKeyWindow];
 }

したがって、私の問題は、アプリケーションを最初に起動すると黒い画面が表示され、数秒後にスプラッシュ画像が表示されることです。スプラッシュ画面のアニメーションが再び終了すると、黒い画面が表示され、数秒後にビューコントローラが表示されます。なぜそれが発生するのかわかりません。質問が明確であることを願っています。ありがとう 編集 私の予想される動作は、アプリが起動するとすぐに黒い画面ではなくスプラッシュ画面が表示され、スプラッシュアニメーションが終了するとすぐに最初のビューコントローラー(最初のタブバーにあるテーブルビューコントローラー)が表示されるはずです。

編集2: このコードでは時間がかかるものですか[window addSubview:tabBarController.view]; スプラッシュ画面の実行中にこのプロセスをバックグラウンドで実行するにはどうすればよいですか。

4

1 に答える 1

0

最初の黒い画面は、アニメーションの遅延を5秒に設定したためです。その代わりに、最初のView Controllerの準備に時間を費やしてから、スプラッシュアニメーションを表示してみませんか。次に、アニメーションが完了したら、ViewControllerに移行できます。

また、最初の画面に似たDefault.pngが必要です。そうすれば、そのblackViewについて心配する必要はありません。このスプラッシュアニメーションに本当に興味がある場合は、Default.pngをアニメーションの最初のフレームのように見せてください。

ただし、AppleのHIGドキュメントを確認することを強くお勧めします。ここでは、実際にはベストプラクティスに準拠していません。

于 2010-02-23T18:47:50.250 に答える