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

Ios 具有透明背景的Swift模态视图控制器,ios,swift,swift2,modalviewcontroller,swift2.1,Ios,Swift,Swift2,Modalviewcontroller,Swift2.1,我知道这个话题很流行,但我对编程语言有点不感兴趣,事实上我还是不明白我把代码放在哪里了。好吧,我来告诉你整个情况: 我试图使一个模式Swift与普通的有点不同:通过点击一个按钮,ViewController在屏幕上显示(遵循模式类型),但背景是透明的。仅显示带标签的蓝色视图。显示此ViewController时,它的背景是透明的,但一旦完成转换,它将保持黑色背景。已经停用了不透明选项,并测试了一些选项,但没有任何问题 有人能帮我吗 该视频是在模拟器上测试的一个案例() 我从swift开始,我对

我知道这个话题很流行,但我对编程语言有点不感兴趣,事实上我还是不明白我把代码放在哪里了。好吧,我来告诉你整个情况:

我试图使一个模式Swift与普通的有点不同:通过点击一个按钮,ViewController在屏幕上显示(遵循模式类型),但背景是透明的。仅显示带标签的蓝色视图。显示此ViewController时,它的背景是透明的,但一旦完成转换,它将保持黑色背景。已经停用了不透明选项,并测试了一些选项,但没有任何问题

有人能帮我吗

该视频是在模拟器上测试的一个案例()

我从swift开始,我对如何在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
    }
}
在模态视图控制器中:

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
    }
}
如果您正在使用故事板:

只需将
Kind
设置为
Present Modally
的故事板序列添加到模态视图控制器,并在此视图控制器上设置以下值:

  • 背景=清晰的颜色
  • 绘图=取消选中不透明复选框
  • 演示=在当前上下文中

正如他在评论中指出的那样:确保segue只对
演示和
转换使用
默认值。使用
当前上下文
进行
演示
会使模式变黑,而不是保持透明。

请参见:我必须保持按钮和ViewController(模式)之间的间隔?因为没有follows就什么都没有了,下面的功能是黑色背景。请参考:您正在使用故事板吗?请看我编辑的答案。我刚刚试过,它可以工作。请确保segue仅对
演示文稿
转换使用
默认值
。使用
Current Context
进行
Presentation
会使模式变为黑色,而不是保持透明。Swift3-slideMenuController.modalPresentationStyle=.overCurrentContext呈现(slideMenuController,动画:true,完成:nil)非常精确,因为这是一个精细的呈现。在故事板中,需要将演示文稿设置为“过当前上下文”的视图控制器,将视图背景颜色设置为透明(且不勾选不透明)设置为viewController.modalPresentationStyle=。过全屏解决了此问题!