Question

I am developing a navigation based application. In this application i want some special animations for Push Pop.

I want MoveOut animation for currentViewController and FadeIn animation for nextViewController.

I have used following code. MoveOut animation for the firstViewController works fine. But I cant get FadeIn animation for nextViewController.

- (IBAction)pushClick:(id)sender
{
    SecondViewController * sec = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

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

    CATransition *transitionSubView = [CATransition animation];
    transitionSubView.duration = 0.4;
    transitionSubView.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transitionSubView.type = kCATransitionFade;
    transitionSubView.subtype = kCATransitionFromLeft;
    transitionSubView.delegate = self;
    [sec.view.layer addAnimation:transitionSubView forKey:nil];

    [self.navigationController pushViewController:sec animated:NO];
}

PLEASE TELL ME SOLUTION FOR POP ALSO.......

Please share your knowledge.....

Was it helpful?

Solution

you should use the following code !

SecondViewController * sec = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

   CATransition *transitionMainView = [CATransition animation];
   transitionMainView.duration = 0.4;
   transitionMainView.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
   transitionMainView.type = kCATransitionReveal;
   transitionMainView.subtype = kCATransitionFromRight;
   transitionMainView.delegate = self;
   [self.navigationController.view.layer addAnimation:transitionMainView forKey:nil];
   [self.navigationController pushViewController:sec animated:NO];
   sec.view.alpha = 0;

   [UIView beginAnimations:@"animation" context:nil];
   [UIView setAnimationDuration:0.75];
   sec.view.alpha = 1;
   [UIView commitAnimations];
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top