iOS - 具有透明度的presentViewController

sol*_*eil 5 uiviewcontroller ios

我想半透明地呈现一个视图控制器全屏幕,这样我仍然可以看到它下面的视图.以下代码显示了新的视图控制器,但它取代了当前的视图控制器.保持原始视图控制器可见的最佳方法是什么?新视图控制器的视图将具有半透明的黑色背景.

NewViewController* newVC = [[NSClassFromString(@"NewViewController") alloc] initWithNibName:deviceNib bundle:nil];
newVC.modalPresentationStyle = UIModalPresentationFullScreen;
newVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;


[self presentViewController:newVC animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud)

CSm*_*ith 6

呈现半透明视图,而不是视图控制器.

mySemiTransparentView.alpha = 0.0f;
[self.view addSubview:mySemiTransparentView];
Run Code Online (Sandbox Code Playgroud)

mySemiTransparentView是您的全屏视图.您可以将其设置为动画:

[UIView beginAnimations:@"fadeIn" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.4f];
mySemiTransparentView.alpha = 0.5f;
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

  • 除非您希望半透明视图上的所有内容都是.5 alpha(包括按钮等),否则不要设置视图的alpha,因为它会级联到所有子组件.你最好创建一个背景视图,占用整个屏幕,即.5 alpha,然后将按钮等分层. (2认同)