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

时间:2015-10-13 14:01:21

标签: ios swift swift2 modalviewcontroller swift2.1

我知道这个主题非常受欢迎,但我在编程语言中有点问题,事实是我仍然不明白我把代码放在哪里。好吧,我将讲述整个案例:

enter image description here

我试图使模态Swift与正常情况略有不同:通过单击按钮,ViewController在屏幕上显示(按照模式类型),但具有透明背景。仅显示带标签的蓝色视图。当呈现此ViewController时,它具有透明背景,但是一旦完成转换,它将保持黑色背景。已经停用了opaque选项,并测试了一些选项,但没有进行任何故障排除。

有些人可以帮助我吗?

该视频是案例模拟器中的一项测试(https://www.youtube.com/watch?v=wT8Uwmq9yqY)。

我从swift开始,我仍然很失落如何在Xcode中编程,我读了一个问题的答案,该问题有以下代码来解决这个问题:

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

我在哪里放这个代码?

1 个答案:

答案 0 :(得分:245)

你可以这样做:

在主视图控制器中:

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的Storyboard Segue添加到您的模态视图控制器,并在此视图控制器上设置以下值:

  • 背景=清除颜色
  • 绘图=取消选中不透明复选框
  • Presentation = Over Current Context

正如Crashalot在评论中指出的那样:确保 segue 仅对DefaultPresentation使用Transition。使用Current Context Presentation会使模态变为黑色而不是保持透明。