2011-11-06 12 views

Odpowiedz

8

Możliwe jest, spójrz na poniższy kod, którego użyłem chwilę i spróbuj zrobić to dla siebie. tylko Yu trzeba zmienić setAnimationTransition

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:0.75]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; 
[UIView commitAnimations]; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDelay:0.375]; 
[self.navigationController popViewControllerAnimated:NO]; 
[UIView commitAnimations]; 

Istnieje kilka różnego rodzaju domyślnych animacji do wykorzystania, jabłka strona mówi, że ten rodzaj animacji są możliwe:

typedef enum { 
    UIViewAnimationTransitionNone, 
    UIViewAnimationTransitionFlipFromLeft, 
    UIViewAnimationTransitionFlipFromRight, 
    UIViewAnimationTransitionCurlUp, 
    UIViewAnimationTransitionCurlDown, 
} UIViewAnimationTransition; 

Więc w twoim przypadku będzie chciał Aby użyć następującego:

[UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.75]; 
    [self.navigationController popViewControllerAnimated:NO]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 
    [UIView commitAnimations]; 
+0

Dzięki. Czy istnieje sposób, aby przesunąć go tak, jakbyś zadzwonił 'pushViewController'? – Mason

+0

Tak jak powiedziałem, wystarczy zmienić wiersz tutaj: [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView: self.navigationController.view cache: NO]; – Wesley

+0

Rozumiem to. Nie mogę jednak znaleźć prawidłowego przejścia. – Mason

16

W ten sposób można pop widok kontroler w przeciwnym kierunku. Działa dla mnie 100%

CATransition *transition = [CATransition animation]; 
    transition.duration = 0.45; 
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; 
    transition.type = kCATransitionFromRight; 
    [transition setType:kCATransitionPush]; 
    transition.subtype = kCATransitionFromRight; 
    [self.navigationController.view.layer addAnimation:transition forKey:nil]; 
    [self.navigationController popViewControllerAnimated:NO]; 
+0

to właśnie szukałem !! Dzięki. – iChirag

+2

Ustawiłeś typ dwukrotnie? 'transition.type = kCATransitionPush' powinno wystarczyć. –

Powiązane problemy