HWPanModalAnimator.m 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //
  2. // HWPanModalAnimator.m
  3. // HWPanModal
  4. //
  5. // Created by heath wang on 2019/4/26.
  6. //
  7. #import "HWPanModalAnimator.h"
  8. @implementation HWPanModalAnimator
  9. + (void)animate:(AnimationBlockType)animations config:(nullable id<HWPanModalPresentable>)config completion:(AnimationCompletionType)completion {
  10. [HWPanModalAnimator animate:animations config:config startingFromPercent:1 isPresentation:YES completion:completion];
  11. }
  12. + (void)dismissAnimate:(AnimationBlockType)animations config:(nullable id<HWPanModalPresentable>)config completion:(AnimationCompletionType)completion {
  13. [HWPanModalAnimator animate:animations config:config startingFromPercent:1 isPresentation:NO completion:completion];
  14. }
  15. + (void)animate:(AnimationBlockType)animations config:(nullable id <HWPanModalPresentable>)config startingFromPercent:(CGFloat)animationPercent isPresentation:(BOOL)flag completion:(AnimationCompletionType)completion {
  16. NSTimeInterval duration;
  17. if (flag) {
  18. duration = config ? [config transitionDuration] : kTransitionDuration;
  19. } else {
  20. duration = config ? [config dismissalDuration] : kTransitionDuration;
  21. }
  22. duration = duration * MAX(animationPercent, 0);
  23. CGFloat springDamping = config ? [config springDamping] : 1.0;
  24. UIViewAnimationOptions options = config ? [config transitionAnimationOptions] : UIViewAnimationOptionPreferredFramesPerSecondDefault;
  25. [UIView animateWithDuration:duration delay:0 usingSpringWithDamping:springDamping initialSpringVelocity:0 options:options animations:animations completion:completion];
  26. }
  27. + (void)smoothAnimate:(AnimationBlockType)animations duration:(NSTimeInterval)duration completion:(nullable AnimationCompletionType)completion {
  28. [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionCurveLinear animations:animations completion:completion];
  29. }
  30. @end