1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- //
- // Created by Jake Lin on 2/24/16.
- // Copyright © 2016 IBAnimatable. All rights reserved.
- //
- import UIKit
- /**
- Animator Factory
- */
- public struct AnimatorFactory {
- public static func makeAnimator(transitionAnimationType: TransitionAnimationType,
- transitionDuration: Duration = defaultTransitionDuration) -> AnimatedTransitioning? {
- switch transitionAnimationType {
- case .systemRotate:
- return SystemTransitionAnimator(systemType: .rotate, duration: transitionDuration)
- case .systemSuckEffect:
- return SystemTransitionAnimator(systemType: .suckEffect, duration: transitionDuration)
- case .systemRippleEffect:
- return SystemTransitionAnimator(systemType: .rippleEffect, duration: transitionDuration)
- case let .explode(xFactor, minAngle, maxAngle):
- return ExplodeAnimator(xFactor: xFactor, minAngle: minAngle, maxAngle: maxAngle, duration: transitionDuration)
- case let .fade(direction):
- return FadeAnimator(direction: direction, duration: transitionDuration)
- case let .fold(direction, folds):
- return FoldAnimator(from: direction, folds: folds, duration: transitionDuration)
- case let .portal(direction, zoomScale):
- return PortalAnimator(from: direction, zoomScale: zoomScale, duration: transitionDuration)
- case let .natGeo(direction):
- return NatGeoAnimator(from: direction, duration: transitionDuration)
- case let .turn(direction):
- return TurnAnimator(from: direction, duration: transitionDuration)
- case let .cards(direction):
- return CardsAnimator(from: direction, duration: transitionDuration)
- case let .flip(direction):
- return FlipAnimator(from: direction, duration: transitionDuration)
- case let .slide(direction, isFade):
- return SlideAnimator(from: direction, isFade: isFade, duration: transitionDuration)
- case let .systemCube(direction):
- return SystemTransitionAnimator(systemType: .cube, duration: transitionDuration, direction: direction)
- case let .systemFlip(direction):
- return SystemTransitionAnimator(systemType: .flip, duration: transitionDuration, direction: direction)
- case let .systemMoveIn(direction):
- return SystemTransitionAnimator(systemType: .moveIn, duration: transitionDuration, direction: direction)
- case let .systemPush(direction):
- return SystemTransitionAnimator(systemType: .push, duration: transitionDuration, direction: direction)
- case let .systemReveal(direction):
- return SystemTransitionAnimator(systemType: .reveal, duration: transitionDuration, direction: direction)
- case let .systemPage(type):
- return SystemTransitionAnimator(systemType: TransitionAnimationType.SystemTransitionType(pageType: type), duration: transitionDuration)
- case let .systemCameraIris(hollowState):
- return SystemTransitionAnimator(systemType: TransitionAnimationType.SystemTransitionType(hollowState: hollowState), duration: transitionDuration)
- default:
- return nil
- }
- }
- public static func makeAnimator(presentationAnimationType: PresentationAnimationType,
- transitionDuration: Duration = defaultPresentationDuration) -> AnimatedPresenting {
- switch presentationAnimationType {
- case let .cover(direction):
- return CoverAnimator(from: direction, duration: transitionDuration)
- case .zoom:
- return ZoomAnimator(duration: transitionDuration)
- case .dropDown:
- return DropDownAnimator(duration: transitionDuration)
- case .flip, .crossDissolve:
- fatalError("System animation, will never be executed")
- }
- }
- }
|