// // SheetContainerPresentationAnimationController.swift // SheetImagePicker // // Created by Shadowfacts on 9/24/19. // Copyright © 2019 Shadowfacts. All rights reserved. // import UIKit class SheetContainerPresentationAnimationController: NSObject, UIViewControllerAnimatedTransitioning { func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { return 0.35 } func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { guard let toVC = transitionContext.viewController(forKey: .to) as? SheetContainerViewController else { fatalError() } toVC.dimmingView.isHidden = true let finalFrame = transitionContext.finalFrame(for: toVC) let dimmingView = UIView(frame: finalFrame) dimmingView.backgroundColor = toVC.dimmingView.backgroundColor dimmingView.alpha = 0 let container = transitionContext.containerView container.addSubview(dimmingView) container.addSubview(toVC.view) toVC.view.transform = CGAffineTransform(translationX: 0, y: toVC.view.bounds.height) let duration = transitionDuration(using: transitionContext) UIView.animate(withDuration: duration, animations: { dimmingView.alpha = toVC.dimmingView.alpha toVC.view.transform = .identity }, completion: { (finished) in dimmingView.removeFromSuperview() toVC.dimmingView.isHidden = false toVC.view.frame = finalFrame transitionContext.completeTransition(!transitionContext.transitionWasCancelled) }) } }