Загрузка экрана приветствия (заставки) перед TabBarController - PullRequest
2 голосов
/ 08 января 2010

В моем приложении для iPhone на основе TabBar я хотел бы отобразить страницу приветствия в полноэкранном режиме (с некоторыми журналами) до загрузки самого приложения. Как я могу загрузить UIView из xib-файла в качестве экрана приветствия, а затем оттуда я могу загрузить приложение на основе TabBar.

Ответы [ 5 ]

5 голосов
/ 08 января 2010

Правильный способ сделать это - нормально загрузить приложение панели вкладок, но использовать метод presentModalViewController:animated: контроллера панели вкладок, чтобы отобразить поверх него контроллер представления (в application:didFinishLaunching:):

SplashScreenController *controller = [[SplashScreenController alloc] initWithNibNamed:nil bundle:nil];
[self.tabBarController presentModalViewController:controller animated:YES];
[controller release];

Я обычно помещаю кнопку "отклонить" на заставке, но вы также можете сделать что-то вроде этого:

[self.tabBarController performSelector:@selector(dismissModalViewControllerAnimated:) withObject:YES afterDelay:2.0];

, который представит контроллер представления при запуске и отклонит его через две секунды. Измените значение YES es на NO s, чтобы избежать анимации скольжения вверх-вниз.

3 голосов
/ 08 января 2010

Я добавляю subView к главному окну в appDelegate:

LoginViewController *loginController = [[LoginViewController alloc] initWithNibName:@"LoginViewController"
                                                                             bundle: nil];
[window addSubview: [loginController view]];

Затем в LoginViewController, когда я готов закрыть View (чтобы показать вашу вкладку, скажем, ControlController) я делаю:

UIView *currentView = self.view;
UIView *theWindow = [currentView superview];

[currentView removeFromSuperview];

CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromBottom];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

[[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];
2 голосов
/ 02 мая 2011
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{    
    splashView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"image01.png"]];
    splashView.frame=CGRectMake(0,21,320,460);
    [self.window makeKeyAndVisible];
    [self.window addSubview:splashView];


    [self performSelector:@selector(splashremove) withObject:nil afterDelay:10.5];
    [self performSelector:@selector(sixthimage) withObject:nil afterDelay:9.0];
    [self performSelector:@selector(fifthimage) withObject:nil afterDelay:7.5];
    [self performSelector:@selector(fourthimage) withObject:nil afterDelay:6.0];
    [self performSelector:@selector(thirdimage) withObject:nil afterDelay:4.5];
    [self performSelector:@selector(secondimage) withObject:nil afterDelay:3.0];
    [self performSelector:@selector(firstimage) withObject:nil afterDelay:1.5];


   return YES;
}

-(void)firstimage
{
    NSLog(@"Inside first image");
    splashView.image=[UIImage imageNamed:@"image01.png"];
}


-(void)secondimage
{
    NSLog(@"Inside second image");
    splashView.image=[UIImage imageNamed:@"image02.png"];
}



-(void)thirdimage
{
    NSLog(@"Inside third image");
    splashView.image=[UIImage imageNamed:@"image03.png"];
}



-(void)fourthimage
{
    NSLog(@"Inside fourth image");
    splashView.image=[UIImage imageNamed:@"image04.png"];
}



-(void)fifthimage
{
    NSLog(@"Inside fifth image");
    splashView.image=[UIImage imageNamed:@"image05.png"];
}



-(void)sixthimage
{
    NSLog(@"Inside sixth image");
    splashView.image=[UIImage imageNamed:@"image06.png"];


}

-(void)splashremove
{
    NSLog(@"Inside splashremove image");

    [splashView removeFromSuperview];
    [splashView release];

    [self.window addSubview:tabBarController.view];
    [self.window makeKeyAndVisible];

}
2 голосов
/ 08 января 2010

В руководствах по пользовательскому интерфейсу сказано, что у вас не должно быть заставки - вы должны представить фиктивную версию представления, которое пользователь увидит при загрузке приложения, без каких-либо данных:

Подробнее см. Руководство по пользовательскому интерфейсу Apple iPhone * для изображений запуска - вот выдержка:

Для улучшения работы пользователя при запуск приложения, вы должны предоставить образ запуска. Образ запуска выглядит очень похоже на первый экран вашего приложение отображает. iPhone OS отображает это изображение сразу, когда пользователь нажимает на значок вашего приложения на Домашний экран. Как только он будет готов к использовать, ваше приложение отображает его первый экран, заменяющий запуск заполнитель изображения.

Важно подчеркнуть, что причина предоставить стартовое изображение улучшить пользовательский опыт; это не возможность предоставить:

  • «Опыт входа в приложение» такие как заставка
  • О окно
  • Элементы брендинга, если они являются статической частью вашего первый экран приложения
0 голосов
/ 08 января 2010

В одном из моих приложений на панели вкладок я отображаю заставку примерно так:

В моем объекте делегата приложения я начинаю отображать его в didFinishLaunchingWithOptions

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    splashScreenVC = [[SplashScreenViewController alloc] initWithNibName:@"SplashScreenView" bundle:nil];

    [window addSubview:splashScreenVC.view];
    [window makeKeyAndVisible];

    //set delay before showing new screen
    [NSTimer scheduledTimerWithTimeInterval:1.5f target:self selector:@selector(onSlashScreenExpired:) userInfo:nil repeats:NO];

    return YES;
}

Метод onSlashScreenExpired выглядит следующим образом:

- (void)onSlashScreenExpired:(id)userInfo{
    [splashScreenVC.view removeFromSuperview];
    [splashScreenVC release];

    // At this point, create the tab bar controller and display it
}

Я вполне уверен, что собрал это вместе с другим вопросом о SO, но я не могу его найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...