title: Present New ViewController programmatically [Swift 3]
body: <p>What I am trying to do is present a new view controller programmatically with Swift 3 with an animated fade-out then fade-in and a pop-up then pop-down depending on what view controllers the user enters. This is so my app feels more modern and less old and blocky.</p>
  
  <p>Here is the current method I am using for presenting a new view controller. It works, but it is rather abrupt and robotic:</p>
  
  <pre><code>let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
  
  let ExampleVC = storyBoard.instantiateViewController(withIdentifier: "ExampleVC")
  //ExampleVC standing for ExampleViewController 
  self.navigationController?.pushViewController(ExampleVC, animated: false) 
  </code></pre>
  
  <p>here is a method for animating UIViews but it doesnt work with UIViewControllers </p>
  
  <pre><code>func popIn(yourView : UIView) {
  
          yourView.transform = CGAffineTransform(scaleX: 0.01, y: 0.01)
          UIView.animateKeyframes(withDuration: 0.2, delay: 0.0, options: UIViewKeyframeAnimationOptions.calculationModeDiscrete, animations: {
              yourView.transform = .identity
          }, completion: nil)
          self.view.addSubview(yourView)
      }
  </code></pre>
  
  <p>i need something similar to this but for a UIViewController</p>
  
  <p><strong>UPDATE</strong></p>
  
  <p>here is what you would use to to present a new viewcontroller in a cool way to make your app more modern</p>
  
  <pre><code>let storyboard = UIStoryboard(name: "Main", bundle: nil)
      let VC = storyboard.instantiateViewController(withIdentifier: "Example") //&lt;&lt;&lt; make sure you enter in your storyboard ID here or you will crash your app
      VC.modalTransitionStyle = .crossDissolve //you can change this to do different animations
      VC.view.layer.speed = 0.1 //adjust this to animate at different speeds
      self.navigationController?.present(VC, animated: true, completion: nil)
  </code></pre>
  
  <p>if you have any questions comment them so i can help you guys out</p>