Skip to content

Instantly share code, notes, and snippets.

@barbietunnie
Last active November 3, 2022 10:04
Show Gist options
  • Save barbietunnie/e5547f35180436ac102cac52a15f8ca3 to your computer and use it in GitHub Desktop.
Save barbietunnie/e5547f35180436ac102cac52a15f8ca3 to your computer and use it in GitHub Desktop.
Swift Modal View Controller with transparent background

You can do it like this:

In your main view controller:

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

In your modal view controller:

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

If you are working with a storyboard:

Just add a Storyboard Seque with Kind set to Present Modally to your modal view controller and on this view controller set the following values:

Background = Clear Color
Drawing = Uncheck the Opaque checkbox
Presentation = Over Current Context

As Crashalot pointed out in his comment: Make sure the segue only uses Default for both Presentation and Transition. Using Current Context for Presentation makes the modal turn black instead of remaining transparent.

Source

@wshrads
Copy link

wshrads commented Oct 6, 2020

Works perfectly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment