在Xcode 6中打开旧项目,发现在呈现的视图控制器中背景不透明的问题。我在下面的主题中使用了解决方案,它在ios7中工作到目前为止。 iOS : ModalView with background transparent?
请建议如何处理iOS 8。
答案 0 :(得分:47)
尝试将呈现的视图控制器的modalPresentationStyle属性设置为新的 UIModalPresentationOverCurrentContext 常量,例如
[_modalViewController setModalPresentationStyle:UIModalPresentationOverCurrentContext]
答案 1 :(得分:19)
mmccomb的解决方案最终对我有用,但我不得不调整一些事情。希望这些细节可以帮助某人:
1)我必须从呈现视图控制器设置呈现的视图控制器的属性,如下所示:
MyViewController *myVc = [segue destinationViewController];
[myVc setModalPresentationStyle:UIModalPresentationOverCurrentContext];
在显示的VC的viewDidLoad中设置演示文稿样式不起作用。
2)我正在使用故事板,我不得不进入segue属性并将Presentation样式设置为Default。设置任何其他值都给了我一个黑色的背景。
答案 2 :(得分:17)
感谢@ mmccomb的程序化解决方案。
在情节提要文件中创建一个segue (按住Ctrl键并单击并拖动)
从下拉选项中选择呈现模态
在IB故事板中选择模态搜索 - (仅限segue)
我建议将alpha / opacity更改为50%+并使用更深的背景颜色,否则您将很难区分呈现视图控制器的内容和模拟呈现的内容
答案 3 :(得分:4)
如果您在“segue”中更改了演示文稿样式,则必须将其更改回默认值。或者它会给你一个黑色的背景。
我尝试使用带有Segue配置的Storyboard,但是它不起作用。
这里的代码适用于我,- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
方法:
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"PresentStationChooserViewController"])
{
ChooseStationViewController *controller = [segue destinationViewController];
controller.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.7f];
[controller setModalPresentationStyle:UIModalPresentationOverCurrentContext];
controller.stationList = _remoteStations;
}
答案 4 :(得分:0)
<强> iOS8上+ 强>
请看下面的代码片段,它解决了我的问题,
SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
[self presentViewController:secondViewController animated:YES completion:nil];