Marcus Zarra отправил отличное решение этого в списке рассылки 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];
существуют переходы для зеркального отражения и завихрения страницы. Если Вы установлены на исчезновении, может попытаться корректировать альфу Вашего нового представления:
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];
Однако то, что Вы, вероятно, хотите, является плавно накладыванием или по крайней мере исчезновением - законченный. Когда UINavigationController переключается на новое представление, он удаляет старый. Для этого эффекта Вы, вероятно, более обеспечены просто добавление нового представления к Вашему существующему UIViewController и постепенного появления его альфа со временем.
Примечание: Если Вы не будете в своем делегате приложения [сам, то окно] не будет работать. Используйте self.view.window благодаря сообщению user412500 для указания на это.
Для iPhone 3.0+ основной кроссфейд проще всего сделать так:
modalViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[[self navigationController] presentModalViewController:modalViewController
animated:YES];