We are going to use two ViewControllers. On first one we will have one Button with action to start the second ViewController. Wich will be our popup.
The first ViewController has name StartViewController
and contains following code
class StartViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } @IBAction func goTapped(_ sender: Any) { let popUpVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "popUpVC") as! PopupViewController self.addChild(popUpVC) popUpVC.view.frame = self.view.frame self.view.addSubview(popUpVC.view) popUpVC.didMove(toParent: self) } }
The second ViewController has PopupViewController
name. In Storyboard add popUpVC id for PopupViewController in Storyboard ID field.
Place UIView on PopupViewController and create a popupView
outlet. Add a Close button above popupView
view and create a btnClose
action.
class PopupViewController: UIViewController { @IBOutlet weak var popupView: UIView! override func viewDidLoad() { super.viewDidLoad() popupView.layer.cornerRadius = 16 view.backgroundColor = UIColor.black.withAlphaComponent(0.75) moveIn() } @IBAction func closeTapped(_ sender: Any) { moveOut() } func moveIn() { self.view.transform = CGAffineTransform(scaleX: 1.35, y: 1.35) self.view.alpha = 0.0 UIView.animate(withDuration: 0.24) { self.view.transform = CGAffineTransform.identity self.view.alpha = 1.0 } } func moveOut() { UIView.animate(withDuration: 0.24, animations: { self.view.transform = CGAffineTransform(scaleX: 1.35, y: 1.35) self.view.alpha = 0.0 }) { _ in self.view.removeFromSuperview() } } }
That's it.
Useful links