MrD*_*ase 69 iphone cocoa-touch
我目前正在显示如下的UIViewController:
[[self navigationController] presentModalViewController:modalViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
并像这样隐藏它:
[self.navigationController dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
动画"从底部向上滑动"......然后向下滑动.如何更改动画样式?我可以让它淡入/淡出吗?
干杯!
Sim*_*nen 194
对于iPhone 3.0+,基本的交叉淡入淡出最容易做到:
modalViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[[self navigationController] presentModalViewController:modalViewController
animated:YES];
Run Code Online (Sandbox Code Playgroud)
Ben*_*ieb 60
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];
Run Code Online (Sandbox Code Playgroud)
有翻转和页面卷曲的过渡.如果您设置为淡入淡出,可以尝试调整新视图的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];
Run Code Online (Sandbox Code Playgroud)
但是,你可能想要的是交叉渐变,或者至少是淡入淡出.当UINavigationController切换到新视图时,它会删除旧视图.对于这种效果,您可能最好只是在现有的UIViewController中添加一个新视图并随着时间的推移逐渐淡化其alpha.
注意:如果您不在您的应用程序委托[自我窗口]将无法工作.使用self.view.window,感谢user412500的帖子指出这一点.
要更新iOS 4中的Alpha淡入淡出:
modalController.view.alpha = 0.0;
[self.view.window.rootViewController presentModalViewController:modalController animated:NO];
[UIView animateWithDuration:0.5
animations:^{modalController.view.alpha = 1.0;}];
Run Code Online (Sandbox Code Playgroud)