ActivityIndicatorFactory.swift 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. //
  2. // Created by Tom Baranes on 21/08/16.
  3. // Copyright © 2016 IBAnimatable. All rights reserved.
  4. //
  5. import UIKit
  6. public struct ActivityIndicatorFactory {
  7. public static func makeActivityIndicator(activityIndicatorType: ActivityIndicatorType) -> ActivityIndicatorAnimating {
  8. return activityIndicatorType.animator
  9. }
  10. }
  11. extension ActivityIndicatorType {
  12. func configureAnimation(in layer: CALayer, size: CGSize, color: UIColor) {
  13. self.animator.configureAnimation(in: layer, size: size, color: color)
  14. }
  15. var animator: ActivityIndicatorAnimating {
  16. switch self {
  17. case .none:
  18. fatalError("Invalid ActivityIndicatorAnimating")
  19. case .audioEqualizer:
  20. return ActivityIndicatorAnimationAudioEqualizer()
  21. case .ballBeat:
  22. return ActivityIndicatorAnimationBallBeat()
  23. case .ballClipRotate:
  24. return ActivityIndicatorAnimationBallClipRotate()
  25. case .ballClipRotateMultiple:
  26. return ActivityIndicatorAnimationBallClipRotateMultiple()
  27. case .ballClipRotatePulse:
  28. return ActivityIndicatorAnimationBallClipRotatePulse()
  29. case .ballGridBeat:
  30. return ActivityIndicatorAnimationBallGridBeat()
  31. case .ballGridPulse:
  32. return ActivityIndicatorAnimationBallGridPulse()
  33. case .ballPulse:
  34. return ActivityIndicatorAnimationBallPulse()
  35. case .ballPulseRise:
  36. return ActivityIndicatorAnimationBallPulseRise()
  37. case .ballPulseSync:
  38. return ActivityIndicatorAnimationBallPulseSync()
  39. case .ballRotate:
  40. return ActivityIndicatorAnimationBallRotate()
  41. case .ballRotateChase:
  42. return ActivityIndicatorAnimationBallRotateChase()
  43. case .ballScale:
  44. return ActivityIndicatorAnimationBallScale()
  45. case .ballScaleMultiple:
  46. return ActivityIndicatorAnimationBallScaleMultiple()
  47. case .ballScaleRipple:
  48. return ActivityIndicatorAnimationBallScaleRipple()
  49. case .ballScaleRippleMultiple:
  50. return ActivityIndicatorAnimationBallScaleRippleMultiple()
  51. case .ballSpinFadeLoader:
  52. return ActivityIndicatorAnimationBallSpinFadeLoader()
  53. case .ballTrianglePath:
  54. return ActivityIndicatorAnimationBallTrianglePath()
  55. case .ballZigZag:
  56. return ActivityIndicatorAnimationBallZigZag()
  57. case .ballZigZagDeflect:
  58. return ActivityIndicatorAnimationBallZigZagDeflect()
  59. case .cubeTransition:
  60. return ActivityIndicatorAnimationCubeTransition()
  61. case .lineScale:
  62. return ActivityIndicatorAnimationLineScale()
  63. case .lineSpinFadeLoader:
  64. return ActivityIndicatorAnimationLineSpinFadeLoader()
  65. case .lineScaleParty:
  66. return ActivityIndicatorAnimationLineScaleParty()
  67. case .lineScalePulseOut:
  68. return ActivityIndicatorAnimationLineScalePulseOut()
  69. case .lineScalePulseOutRapid:
  70. return ActivityIndicatorAnimationLineScalePulseOutRapid()
  71. case .orbit:
  72. return ActivityIndicatorAnimationOrbit()
  73. case .pacman:
  74. return ActivityIndicatorAnimationPacman()
  75. case .semiCircleSpin:
  76. return ActivityIndicatorAnimationSemiCircleSpin()
  77. case .squareSpin:
  78. return ActivityIndicatorAnimationSquareSpin()
  79. case .triangleSkewSpin:
  80. return ActivityIndicatorAnimationTriangleSkewSpin()
  81. case .circleStrokeSpin:
  82. return ActivityIndicatorAnimationCircleStrokeSpin()
  83. case .circleDashStrokeSpin:
  84. return ActivityIndicatorAnimationCircleDashStrokeSpin()
  85. case .gear:
  86. return ActivityIndicatorAnimationGear()
  87. case .tripleGear:
  88. return ActivityIndicatorAnimationTripleGear()
  89. case .heartBeat:
  90. return ActivityIndicatorAnimationHeartBeat()
  91. case .triforce:
  92. return ActivityIndicatorAnimationTriforce()
  93. case .rupee:
  94. return ActivityIndicatorAnimationRupee()
  95. case .newtonCradle:
  96. return ActivityIndicatorAnimationNewtonCradle()
  97. case .circlePendulum:
  98. return ActivityIndicatorAnimationCirclePendulum()
  99. }
  100. }
  101. }