ModalViewController透明背景iOS 8

时间:2014-09-01 11:54:10

标签: uiviewcontroller ios8 modalviewcontroller

在Xcode 6中打开旧项目,发现在呈现的视图控制器中背景不透明的问题。我在下面的主题中使用了解决方案,它在ios7中工作到目前为止。 iOS : ModalView with background transparent?

请建议如何处理iOS 8。

5 个答案:

答案 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)

Interface Builder Solution

感谢@ mmccomb的程序化解决方案。

通过以下方式实现此目的:

  1. 在情节提要文件中创建一个segue (按住Ctrl键并单击并拖动)

  2. 从下拉选项中选择呈现模态

  3. 在IB故事板中选择模态搜索 - (仅限segue)

  4. 属性检查器中的演示文稿设置为过度上下文
  5. 我建议将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];