Marcus Zarra hat eine großartige Lösung dafür auf der SDK-Mailingliste veröffentlicht:
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];
Es gibt Übergänge zum Umblättern und Einrollen von Seiten. Wenn Sie auf Überblenden eingestellt sind, können Sie versuchen, das Alpha Ihrer neuen Ansicht anzupassen:
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];
Was Sie jedoch wahrscheinlich wollen, ist eine Überblendung oder zumindest eine Überblendung. Wenn der UINavigationController zu einer neuen Ansicht wechselt, wird die alte entfernt. Für diesen Effekt ist es wahrscheinlich besser, wenn Sie Ihrem vorhandenen UIViewController eine neue Ansicht hinzufügen und dessen Alpha im Laufe der Zeit einblenden.
Hinweis: Wenn Sie sich nicht in Ihrer App befinden, funktioniert der Delegat [Selbstfenster] nicht. Verwenden Sie self.view.window, dank des Beitrags von user412500, um darauf hinzuweisen.