Marcus Zarra anotó una gran solución a este en la lista de correo SDK:
UIViewController *controller = [[[MyViewController alloc] init] autorelease];
UIViewAnimationTransition trans = UIViewAnimationTransitionCurlUp;
[UIView beginAnimations: nil context: nil];
[UIView setAnimationTransition: trans forView: [self window] cache: YES];
[navController presentModalViewController: controller animated: NO];
[UIView commitAnimations];
Hay transiciones para mover de un tirón y la página-curling. Si se fijan en la decoloración, puede intentar ajustar el alfa de la nueva vista:
UIViewController *controller = [[[MyViewController alloc] init] autorelease];
controller.view.alpha = 0.0;
[navController presentModalViewController: controller animated: NO];
[UIView beginAnimations: nil context: nil];
controller.view.alpha = 1.0;
[UIView commitAnimations];
Sin embargo, lo que es probable que desee es un fundido cruzado, o por lo menos un fundido de más. Cuando UINavigationController cambia a una nueva vista, elimina la anterior. Para este efecto, probablemente sea mejor simplemente agregar una nueva vista a su UIViewController existente y desvanecer su alfa con el tiempo.
Nota: Si no está en su aplicación, el delegado [ventana propia] no funcionará. Utilice self.view.window, gracias a la publicación de user412500 para señalar esto.
Esto es viejo! ¡Vea la respuesta de Simo Salminen a continuación! MrDatabase deberías cambiar esto –