Настройка анимации UINavigationController: CATransition

У меня есть UINavigationController. Я сделал VC1 rootViewController и программно загрузил VC2 из VC1, а затем получил настраиваемую анимацию для перехода от VC1 к VC2. Стандарт. Все хорошо и хорошо.

Теперь я хотел бы иметь пользовательскую анимацию между ними, например: Custom animation

В общем, VC1 ускользает из поля зрения, а VC2 находится под ним. Точно так же, как стопка бумаги, где вы сдвигаете первый лист (VC1) и, таким образом, открываете лист под ним (VC2).

Я попробовал следующий код, который вызывается из VC1, чтобы перейти к VC2. Но с этим есть проблемы:

MyVC2 *vctwo = [[[MyVC2 alloc] init] autorelease];

CATransition *transition = [CATransition animation];
transition.duration = 1;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionReveal;
transition.subtype = kCATransitionFromRight;
transition.delegate = self;
[self.navigationController.view.layer addAnimation:transition forKey:nil];

[[self navigationController] pushViewController:vctwo animated:YES];

Проблемы следующие:

  1. VC2 не фиксируется в фоновом режиме.Это как бы скользит (хотя я указал kCATransitionReveal). Я хочу, чтобы VC2 был полностью закреплен в фоновом режиме.
  2. VC1 гаснет. Я действительно не знаю почему. Я не использовал kCATransitionFade или что-то подобное, поэтому я не вижу, откуда происходит затухание.

Мы будем очень признательны за любые предложения, почему я не получаю ожидаемых результатов. Извините, если это очевидно, но я пытаюсь это сделать уже несколько часов и очень расстроился.

5
задан n.evermind 5 October 2011 в 15:23
поделиться