ответ

46

Попробуйте это:

UIViewController *yourViewController = [[UIViewController alloc]init]; 

[UIView beginAnimations: @"Showinfo"context: nil]; 
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:0.75]; 
[self.navigationController pushViewController: yourViewController animated:NO]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 
[UIView commitAnimations]; 
+0

Спасибо! Это было действительно полезно! –

+1

хороший пример, это поможет многим из нас, thnks xCode :) –

+1

Любая идея о том, как это сделать с переходами в стиле iOS 8? – SleepsOnNewspapers

0

Вы должны рассмотреть возможность сделать что-то вроде:

ViewController *myVC = [[ViewController alloc] initWithFrame:OFF_SCREEN]; 
[navigationController pushViewController:myVC animated:NO]; 

где OFF_SCREEN некоторые CGRect ниже экрана, как (0, 481, 320, 480). Затем используйте блок анимации, чтобы настроить frame.origin представления viewcontroller как (0, 0). Вероятно, вы захотите сделать блок анимации в viewDidLoad или viewDidAppear.

+0

Контроллеры представления не имеют инициализатора 'initWithFrame:' ​​ –

54

Если вы хотите к выцветанию анимации, этот подход работает.

CATransition* transition = [CATransition animation]; 
transition.duration = 0.3; 
transition.type = kCATransitionFade; 
transition.subtype = kCATransitionFromTop; 

[self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; 
[self.navigationController pushViewController:gridController animated:NO]; 
+1

Работает как чемпион! Хороший переход. Благодаря! –

+0

Эй, это отлично поработало для меня, спасибо большое !!! –

+0

Работает красиво! Большое спасибо! – Amit

21

Для отображения PushViewConttroler анимации, как Present ниже код работает,

Для Пуш

ViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"]; 
CATransition* transition = [CATransition animation]; 
transition.duration = 0.4f; 
transition.type = kCATransitionMoveIn; 
transition.subtype = kCATransitionFromTop; 
[self.navigationController.view.layer addAnimation:transition 
                forKey:kCATransition]; 
[self.navigationController pushViewController:VC animated:NO]; 

И POP

CATransition* transition = [CATransition animation]; 
transition.duration = 0.4f; 
transition.type = kCATransitionReveal; 
transition.subtype = kCATransitionFromBottom; 
[self.navigationController.view.layer addAnimation:transition 
              forKey:kCATransition]; 
[self.navigationController popViewControllerAnimated:NO]; 

Существует одна проблема Тхо ugh, что его дисплей светится черным фоном при его движении вверх/вниз,
Работая над этим, как только его проделаете новый код здесь.

+3

Помимо нажатия вы также добавили поп. Хорошая точка зрения! –

+0

Но все равно анимационная кривая ... –

+0

@ Джулиан, не получив свою точку. – Dilip