iOS - 具有透明度的presentViewController
我想半透明地呈现视图控制器全屏,以便我仍然可以看到它下面的视图。下面的代码提供了新的视图控制器,但它取代了当前的视图控制器。保持原始视图控制器可见的最佳方式是什么?新视图控制器的视图将具有半透明的黑色背景。iOS - 具有透明度的presentViewController
NewViewController* newVC = [[NSClassFromString(@"NewViewController") alloc] initWithNibName:deviceNib bundle:nil];
newVC.modalPresentationStyle = UIModalPresentationFullScreen;
newVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:newVC animated:YES completion:NULL];
呈现半透明视图,而不是视图控制器。
mySemiTransparentView.alpha = 0.0f;
[self.view addSubview:mySemiTransparentView];
mySemiTransparentView是您的全屏视图。您可以设置动画到位:
[UIView beginAnimations:@"fadeIn" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.4f];
mySemiTransparentView.alpha = 0.5f;
[UIView commitAnimations];
可以存在于以下方式半透明模态控制器:
NewViewController* newVC = [[NSClassFromString(@"NewViewController") alloc] initWithNibName:deviceNib bundle:nil];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
newVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:newVC animated:YES completion:NULL];
注意这里,你必须不断UIModalPresentationCurrentContext设置为自我 .modalPresentationStyle,而不是newVC .modalPresentationStyle
此外,当您使用UIModalTransitionStyleCrossDissolve的newVC.view的阿尔法将在过渡期间被重写,所以如果你想半透明背景,你需要保持newVC.view的的backgroundColor清晰,只需添加另一个UIView的作为它的子视图半透明backgroundColor
'self.modalPresentationStyle = UIModalPresentationCurrentContext;'或'newVC。 modalPresentationStyle = UIModalPresentationCustom'and + 1也用于答案的第二部分。谢谢 – 2015-03-28 15:59:56
是的,但我想使用视图控制器。 – soleil 2012-08-09 22:52:06
您仍然可以通过alloc/init实例化您的UIViewController,然后mySemiTransparentView可以只是您的ViewController.view – CSmith 2012-08-15 12:18:28
除非您希望半透明视图上的所有内容为.5 alpha(包括按钮等),否则请勿设置查看,因为它级联到所有子组件。你最好创建一个背景视图,它占据整个0.5英寸的屏幕,然后将你的按钮等层叠到它上面。 – 2013-06-06 01:51:35