Маркус Зарра опубликовал отличное решение в списке рассылки 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 за указание на это.