transición de izquierda a derecha en una aplicación basada en vista al pasar de un controller de vista a otro

MyView *view=[[[MyView alloc] init] autorelease]; [view setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; [self presentModalViewController:view animated:YES]; 

He usado la transición de movimiento al pasar de un controller de vista a otro. Pero mi requisito es de transición de izquierda a derecha. Por favor ayúdame a resolver este problema gracias de antemano. aquí está mi código:

Debe agregar QuartzCore Framework y luego importar #import <QuartzCore/QuartzCore.h>

 MyView *next = [[MyView alloc] init]; CATransition *animation = [CATransition animation]; [self presentModalViewController:next animated:NO]; [animation setDuration:0.40]; [animation setType:kCATransitionPush]; [animation setSubtype:kCATransitionFromLeft]; //[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]]; [[next.view layer] addAnimation:animation forKey:@"SwitchToView1"]; [next release]; 

Supongo que estás descartando un controller de vista 2 del controller de vista 1. En el controller de vista 2 estás usando esto

[self dismissModalViewControlleAnimated: NO];

Ahora, en el controller de la primera vista, importe el encabezado "QuartzCore" y agregue el método viewWillAppear con el código

#import <QuartzCore/QuartzCore.h>

(vacío) viewWillAppear: (BOOL) animated {

 CATransition *animation = [CATransition animation]; [animation setDelegate:self]; [animation setType:kCATransitionPush]; [animation setSubtype:kCATransitionFromLeft]; [animation setDuration:0.50]; [animation setTimingFunction: [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [self.view.layer addAnimation:animation forKey:kCATransition]; } 

Espero que este código te ayude mucho.

 - (void)slideView:(UIView*)view direction:(BOOL)isLeftToRight { CGRect frame = view.frame; frame.origin.x = (isLeftToRight) ? -320 : 320; view.frame = frame; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.5]; frame.origin.x = 0; view.frame = frame; [UIView commitAnimations]; } 

Sí, debería hacerlo a través del controller de navigation.

Aquí hay un código para ayudarlo, si quiere hacerlo a través de Navigational Controller: – En AppDelegate.h: –

 @interface AppDelegate : UIResponder <UIApplicationDelegate,UINavigationControllerDelegate>{ UINavigationController *navController; } 

En AppDelegate.m: –

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // ViewController is your FirstViewController which loads over Window. self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease]; self.window.rootViewController = _viewController; navController =[[UINavigationController alloc] initWithRootViewController:_viewController]; self.window.rootViewController = navController; [self.window makeKeyAndVisible]; return YES; } 

Luego, en su ViewController.m en su button Tapped Function puede hacer esto:

 NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"NextViewController" bundle:nil]; [self.navigationController pushViewController:nextController animated:YES]; 

Y eso es todo … Espero que te ayude. Si es así, puede aceptar la respuesta o validarla. 🙂

¿Por qué no usa un UINavigationController y empuja el UIViewController lugar de presentarlo de manera modal?

Editar:

Para cambiar su aplicación basada en UINavigationController en un UINavigationController simplemente agregue esto a su AppDelegate

  self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; UINavigationController *nvcontrol = [[UINavigationController alloc] initWithRootViewController:self.viewController]; [self.window addSubview:nvcontrol.view]; 

testing esto

 [self.navigatationController pushViewController:view animated:YES];