Repositorio del curso CCOM4030 el semestre B91 del proyecto kilometro0

SlideInTransition.swift 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //
  2. // SlideInTransition.swift
  3. // app
  4. //
  5. // Created by Luis Quiñones on 10/25/19.
  6. // Copyright © 2019 Luis Quiñones . All rights reserved.
  7. //
  8. import UIKit
  9. class SlideInTransition: NSObject, UIViewControllerAnimatedTransitioning {
  10. var isPresenting = false
  11. let dimmingView = UIView()
  12. func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
  13. return 0.3
  14. }
  15. func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
  16. guard let toViewController = transitionContext.viewController(forKey: .to),
  17. let fromViewController = transitionContext.viewController(forKey: .from) else { return }
  18. let containerView = transitionContext.containerView
  19. let finalWidth = toViewController.view.bounds.width * 0.8
  20. let finalHeight = toViewController.view.bounds.height
  21. if isPresenting {
  22. // Add dimming view
  23. dimmingView.backgroundColor = .black
  24. dimmingView.alpha = 0.0
  25. containerView.addSubview(dimmingView)
  26. dimmingView.frame = containerView.bounds
  27. // Add menu view controller to container
  28. containerView.addSubview(toViewController.view)
  29. // Init fram off the screen
  30. toViewController.view.frame = CGRect(x: -finalWidth, y: 0, width: finalWidth, height: finalHeight)
  31. }
  32. // Animate on screen
  33. let transform = {
  34. self.dimmingView.alpha = 0.5
  35. toViewController.view.transform = CGAffineTransform(translationX: finalWidth, y: 0)
  36. }
  37. // Animate off screen
  38. let identity = {
  39. self.dimmingView.alpha = 0.0
  40. fromViewController.view.transform = .identity
  41. }
  42. let duration = transitionDuration(using: transitionContext)
  43. let isCancelled = transitionContext.transitionWasCancelled
  44. UIView.animate(withDuration: duration, animations: {
  45. self.isPresenting ? transform() : identity()
  46. }) { (_) in
  47. transitionContext.completeTransition(!isCancelled)
  48. }
  49. }
  50. }