Hibit_iOS/Pods/HWPanModal/Sources/Animator/HWPanModalAnimator.m
2024-06-07 11:41:02 +08:00

41 lines
1.8 KiB
Objective-C

//
// HWPanModalAnimator.m
// HWPanModal
//
// Created by heath wang on 2019/4/26.
//
#import "HWPanModalAnimator.h"
@implementation HWPanModalAnimator
+ (void)animate:(AnimationBlockType)animations config:(nullable id<HWPanModalPresentable>)config completion:(AnimationCompletionType)completion {
[HWPanModalAnimator animate:animations config:config startingFromPercent:1 isPresentation:YES completion:completion];
}
+ (void)dismissAnimate:(AnimationBlockType)animations config:(nullable id<HWPanModalPresentable>)config completion:(AnimationCompletionType)completion {
[HWPanModalAnimator animate:animations config:config startingFromPercent:1 isPresentation:NO completion:completion];
}
+ (void)animate:(AnimationBlockType)animations config:(nullable id <HWPanModalPresentable>)config startingFromPercent:(CGFloat)animationPercent isPresentation:(BOOL)flag completion:(AnimationCompletionType)completion {
NSTimeInterval duration;
if (flag) {
duration = config ? [config transitionDuration] : kTransitionDuration;
} else {
duration = config ? [config dismissalDuration] : kTransitionDuration;
}
duration = duration * MAX(animationPercent, 0);
CGFloat springDamping = config ? [config springDamping] : 1.0;
UIViewAnimationOptions options = config ? [config transitionAnimationOptions] : UIViewAnimationOptionPreferredFramesPerSecondDefault;
[UIView animateWithDuration:duration delay:0 usingSpringWithDamping:springDamping initialSpringVelocity:0 options:options animations:animations completion:completion];
}
+ (void)smoothAnimate:(AnimationBlockType)animations duration:(NSTimeInterval)duration completion:(nullable AnimationCompletionType)completion {
[UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionCurveLinear animations:animations completion:completion];
}
@end