IOS:透明背景的模态视图控制器

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (37)

正试图以模型的方式呈现一个视图控制器,其背景是透明的。

我的目标是让呈现和呈现的视图控制器的视图同时显示。

问题是,当呈现动画结束时,呈现视图控制器的视图就消失了。

- (IBAction)pushModalViewControllerButtonPressed:(id)sender
{
    ModalViewController *modalVC = [[ModalViewController alloc] init];
    [self presentViewController:modalVC animated:YES completion:nil];
}

避免使用此解决方案。我怎么能修好它?

提问于
用户回答回答于

以下代码仅适用于iPad。

self.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentModalViewController:modalVC animated:YES]

模态视图

我会添加一个子视图并完成它。这似乎让我对事情有了更好的控制。

编辑:

正如Paul Linsay所提到的,自从iOS 8以来,所需要的只是UIModalPresentationOverFullScreen对于呈现的ViewController的modalPresentationStyle。这也将涵盖导航栏和tabBar按钮。

用户回答回答于

对于那些试图让它在IOS 8中工作的人来说,“苹果批准的”显示透明模态视图控制器的方法是通过设置modalPresentationStyle关于现在埃德控制器UIModalPresentationOverCurrentContext.

也可以通过在故事板中设置segue的属性来实现。

来自UIViewController文档:

UIModalPresentationOverCurrentContext仅在父视图控制器的内容上显示内容的表示样式。当演示文稿结束时,显示内容下的视图不会从视图层次结构中移除。因此,如果呈现的视图控制器没有用不透明的内容填充屏幕,则底层内容将显示出来。 当在弹出器中显示视图控制器时,只有当转换样式为UIModalTranstionStyleCover垂直时,才支持此表示样式。尝试使用不同的转换样式会触发异常。但是,如果父视图控制器不在弹出窗口中,则可以使用其他转换样式(部分卷曲转换除外)。 可在IOS 8.0及更高版本中获得。

WWDC 2014中的“查看控制器在iOS 8中的进展”视频对此做了一些详细的介绍。

注:

  • 一定要给你的视图控制器一个清晰的背景色,以免它实际上是透明的!
  • 你得把这个以前viewDidLoad视图控制器不会有任何影响

扫码关注云+社区