Обрабатывать блок анимации по умолчанию при повороте UIViewController - PullRequest
1 голос
/ 14 апреля 2010

У меня есть UIViewController в navigationController. Все, что я хочу, это когда я поворачиваюсь из пейзажа в портрет, чтобы изменить вид на другой, принадлежащий другому контроллеру вида (еще одна вкладка из контроллера нижней панели вкладок). Я сделал это, используя следующий код:

-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{

  if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation)){  
      UIViewController *controller =  [[[UIApplication sharedApplication] delegate].tabBarController.viewControllers objectAtIndex : 1];
      [UIView beginAnimations: nil context: nil];
      [[self view] setAlpha:0.0];
      [[[UIApplication sharedApplication] delegate].tabBarController setSelectedViewController:controller];
      [UIView commitAnimations];  

  } 

}

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

Проблема в том, что текущий вид не исчезает сразу, он сохраняется в течение примерно 0,2 секунды в процессе вращения.

[[self view] setAlpha: 0.0]; здесь не работает - я думаю, что он снова изменяется, чтобы быть видимым блоком анимации дефалута, который выполняется каждым видом при его вращении.

Может ли кто-нибудь дать мне решение?

Цените, Алекс.

1 Ответ

2 голосов
/ 04 марта 2011

Вы пытались использовать делегаты / блоки и выполнять операцию tabBar в блоке? Например:

        [UIView animateWithDuration:0.1
                              delay:0.0
                            options:UIViewAnimationOptionBeginFromCurrentState 
                         animations:^{ [self view].alpha = 0.0; } 
                         completion:^(BOOL fin) { 
                             if (fin) {
                                 [[[UIApplication sharedApplication] delegate].tabBarController setSelectedViewController:controller];
                             }
                         }];

Примечание: сам код не проверял.

Чтобы узнать больше о блоках и анимации, вам следует пройти курс по разработке iPhone в Стэнфорде (бесплатно онлайн) от Googling 'CS193p.'

...