2012-12-06 33 views
5

Chcę zmienić przejście "przesuń od prawej do lewej" kontrolera widoku nawigacyjnego po naciśnięciu innego kontrolera widoku. Znalazłem opcję w serii ujęć, ale wygląda na to, że nie działa. Styl przejścia jest wciąż taki sam. Klikając kontroler widoku przeznaczenia w serii ujęć, znalazłem to, chociaż wygląda na to, że przejścia są dla modalnego stylu segue:Przełączanie przejść w stylu iOS w stylu Push Przełączanie

transition

Więc moje pytanie brzmi, czy jest możliwe, aby styl Push zmienić przejście, aby wyglądać inaczej? A jeśli tak, to w jaki sposób?

Odpowiedz

2

Aby uzyskać przejście push, należy użyć kontrolera UINavigationController łączącego widoki. Są to wszystkie opcje przejścia modalnego dla jednorazowych przejść.

Z tego samego powodu, przynajmniej w scenorysach, nie można użyć niczego innego niż push, jeśli już używasz kontrolera UINavigationController.

Najprostszym sposobem, w jaki udało mi się obejść to ograniczenie, jest wykonanie go w kodzie i zawijanie przycisku push bez animacji zawiniętego w animację UIView lub CAAnimation.

6

Możesz użyć CATransition w niestandardowym segmencie, aby osiągnąć dowolny rodzaj przejścia. Oto przykładowy kod.

-(void)perform { 

__block UIViewController *sourceViewController = (UIViewController*)[self sourceViewController]; 
__block UIViewController *destinationController = (UIViewController*)[self destinationViewController];      

CATransition* transition = [CATransition animation]; 
transition.duration = .25; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade 
transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom 



[sourceViewController.navigationController.view.layer addAnimation:transition 
              forKey:kCATransition]; 

[sourceViewController.navigationController pushViewController:destinationController animated:NO];  


} 

odwiedzić ten link aby uzyskać więcej informacji http://blog.jambura.com/2012/07/05/custom-segue-animation-left-to-right-using-catransition/

+0

Wielki Odpowiedź bro ... Spojrzałem na niego przez długi czas :-) –