       self.delegate?.animatorIsAnimatingDismissal?(self)
       UIView.animate(
         withDuration: self.dismissalDuration, animations: {
-          self.viewTopConstraint.isActive = false
-          self.viewTopConstraint = self.viewTopStartConstraint
-          self.viewTopConstraint.isActive = true
+          viewEndConstraint.isActive = false
+          viewStartConstraint.isActive = true
           self.delegate?.animationBlockForDismissal?(self)
           self.view.alpha = self.animationStartAlpha
           self.view.superview!.layoutIfNeeded()

        initialSpringVelocity: 0,
        options: [.curveEaseInOut, .beginFromCurrentState, .allowUserInteraction],
        animations: {
          self.viewTopConstraint.isActive = false
          self.viewTopConstraint = self.viewTopEndConstraint!
          self.viewTopConstraint.isActive = true
          self.delegate?.animationBlockForPresentation?(self)
          self.view.alpha = self.animationEndAlpha
          self.view.superview!.layoutIfNeeded()

  /** Dismiss the view with a completion block */
  private func animateDismissal(withCompletion completion: (() -> Void)?) {
    assert(view.superview != nil, "view instance must have a superview by this point!")
    guard let viewStartConstraint = viewStartConstraint, let viewEndConstraint = viewEndConstraint else { return }
    isDismissing = true
    DispatchQueue.main.async {
      self.view.superview!.layoutIfNeeded()
