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