具有透明背景的Swift模态视图控制器

我知道这个话题是相当stream行的,但是我是一个编程语言中的一个小问题,事实是,我仍然不明白我把代码放在哪里。 那么,我会告诉整个情况:

在这里输入图像说明

我试图做一个有点不同于正常的模态Swift:通过点击一个button,ViewController在屏幕上显示(模式types),但透明的背景。 只有带有标签的蓝色视图才会显示。 当这个ViewController被提交时,它具有透明的背景,但是一旦它完成转换,它将保持黑色背景。 已经停用了不透明的选项,并testing了一些选项,但没有任何解决办法。

有人可以帮助我吗?

video是模拟器上的一个testing案例( https://www.youtube.com/watch?v=wT8Uwmq9yqY )。

我开始迅速,我仍然很迷茫,如何在Xcode编程,我读了一个问题的答案有以下代码来解决这个问题:

self.presentingViewController.providesPresentationContextTransitionStyle = YES; self.presentingViewController.definesPresentationContext = YES; modal.modalPresentationStyle = UIModalPresentationOverCurrentContext; 

我在哪里把这个代码?

你可以这样做:

在你的主视图控制器中:

 func showModal() { let modalViewController = ModalViewController() modalViewController.modalPresentationStyle = .overCurrentContext presentViewController(modalViewController, animated: true, completion: nil) } 

在你的模态视图控制器中:

 class ModalViewController: UIViewController { override func viewDidLoad() { view.backgroundColor = UIColor.clearColor() view.opaque = false } } 

如果您正在使用故事板:

只需添加一个Storyboard Segue with Kind设置为Present Modally到您的模式视图控制器,并在此视图控制器上设置以下值:

  • 背景=清除颜色
  • 绘图=取消选中不透明checkbox
  • 演示文稿=过度上下文

正如Crashalot在他的评论中所指出的那样:确保Segue只对PresentationTransition都使用Default 。 使用Current Context进行Presentation会使模式变黑而不是保持透明。