iphone - bar - navigator controller swift




Spingere ViewController da destra a sinistra con UINavigationController (6)

Come tutti sanno che UINavigationController spinge un ViewController da sinistra a destra, c'è un modo per spingere la vista da destra a sinistra? come l'animazione per il pulsante Indietro.
Per ora ho questo:


[self.navigationController pushViewController:viewController animated:YES];

Provi questo, per favore

HomePageController  *pageView = [[HomePageController alloc] initWithNibName:@"HomePageController_iPhone" bundle:nil];

CATransition *transition = [CATransition animation];
transition.duration = 0.45;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
transition.delegate = self;
[self.navigationController.view.layer addAnimation:transition forKey:nil];

self.navigationController.navigationBarHidden = NO;
[self.navigationController pushViewController:pageView animated:NO];

No, da destra a sinistra è riservato per scattare viewcontrollers dallo stack di navigazione. Puoi comunque ottenere un tale effetto animando te stesso le visualizzazioni. Qualcosa di simile a:

[UIView beginAnimations:@"rightToLeft" context:NULL];
CGRect newFrame = aView.frame;
newFrame.origin.x -= newFrame.size.width;
aView.frame = newFrame;
[UIView commitAnimations];

Ciò tuttavia non farà nulla per il tuo controller di navigazione.


Questo codice funziona correttamente. Per favore prova

CATransition *transition = [CATransition animation];
transition.duration = 0.3f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionReveal;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:phoneServicesViewController animated:NO];

Try this :  
//Push effect in reverse way
    CATransition* transition = [CATransition animation];
    transition.duration = 0.75;
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromLeft;
    [self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
    [self.navigationController pushViewController:vc animated:NO];

Ho avuto lo stesso problema, questo è il modo in cui l'ho risolto

[self.navigationController popViewControllerAnimated: YES];

Questo sarà simile al "ritorno", cioè a una situazione in cui si fa clic su un pulsante Indietro e si passa alla pagina precedente


Solo un miglioramento della migliore risposta qui a mio parere:

UIViewController *newVC = ...;
[self.navigationController setViewControllers:@[newVC, self] animated:NO];
[self.navigationController popViewControllerAnimated:YES];

E per tornare al controller iniziale, basta fare un push.







uinavigationcontroller