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][1] 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. [1]: http://stackoverflow.com/users/144088/crashalot [Source](http://stackoverflow.com/a/33106533/499052)