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 に新しいビューを追加し、時間の経過とともにそのアルファをフェードインする方がおそらく良いでしょう。
注: アプリ デリゲート [セルフ ウィンドウ] を使用していない場合、機能しません。これを指摘してくれた user412500 の投稿に感謝します。