Ответ 1
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];
Существуют переходы для переворота и скручивания страниц. Если вы настроены на затухание, можете попробовать настроить новый вид alpha:
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 window] не будет работать. Используйте self.view.window, благодаря сообщению user412500 для указания этого.