ViewControllerAnimatedTransitioning.swift 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. //
  2. // Created by Tom Baranes on 25/07/16.
  3. // Copyright © 2016 Jake Lin. All rights reserved.
  4. //
  5. import UIKit
  6. public protocol ViewControllerAnimatedTransitioning: UIViewControllerAnimatedTransitioning {
  7. /**
  8. Transition duration
  9. */
  10. var transitionDuration: Duration { get set }
  11. }
  12. public extension ViewControllerAnimatedTransitioning {
  13. func retrieveViews(transitionContext: UIViewControllerContextTransitioning) -> (UIView?, UIView?, UIView?) {
  14. return (transitionContext.view(forKey: UITransitionContextViewKey.from),
  15. transitionContext.view(forKey: UITransitionContextViewKey.to),
  16. transitionContext.containerView)
  17. }
  18. func retrieveViewControllers(transitionContext: UIViewControllerContextTransitioning) -> (UIViewController?, UIViewController?, UIView?) {
  19. return (transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from),
  20. transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to),
  21. transitionContext.containerView)
  22. }
  23. func retrieveTransitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
  24. if let transitionContext = transitionContext {
  25. return transitionContext.isAnimated ? transitionDuration : 0
  26. }
  27. return 0
  28. }
  29. }