неожиданная задержка между заставкой и контроллером первого просмотра - PullRequest
0 голосов
/ 23 февраля 2010

У меня есть приложение с вкладками. вот мой код

- (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];
 }

поэтому моя проблема в том, что когда мое приложение запускается первым, оно отображает черный экран, а через несколько секунд оно отображает мое заставку. когда анимация заставки заканчивается снова, она отображает черный экран и через несколько секунд отображает мой контроллер вида. Я не знаю, почему это происходит. Надеюсь, мой вопрос ясен. Спасибо EDIT Мое ожидаемое поведение - как только приложение запускается, оно должно отображать мой экран-заставку вместо черного экрана, и как только анимация-заставка заканчивается, он должен отображать мой первый контроллер представления (который является контроллером представления таблицы в первой панели вкладок)

РЕДАКТИРОВАТЬ 2: это что-то отнимает много времени в этом коде [окно addSubview: tabBarController.view]; как мне сделать этот процесс в фоновом режиме, пока мой заставка работает.

1 Ответ

0 голосов
/ 23 февраля 2010

Первый черный экран, потому что вы устанавливаете задержку анимации на 5 секунд. Вместо этого, почему бы вам не потратить время на подготовку первого контроллера представления, а затем отобразить всплеск анимации. После завершения анимации вы можете перейти к контроллеру представления.

Кроме того, у вас должен быть файл Default.png, похожий на ваш первый экран. Тогда вам не нужно беспокоиться об этом blackView. Если вы действительно намерены использовать эту анимацию всплеска, вы должны сделать Default.png похожим на первый кадр анимации.

Однако я настоятельно рекомендую вам ознакомиться с документом Apple HIG. Вы действительно не соответствуете лучшим практикам здесь.

...