HWShoppingCartPresentingAnimation.m 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. //
  2. // HWShoppingCartPresentingAnimation.m
  3. // HWPanModal-iOS10.0
  4. //
  5. // Created by heath wang on 2019/9/5.
  6. //
  7. #import "HWShoppingCartPresentingAnimation.h"
  8. @implementation HWShoppingCartPresentingAnimation
  9. - (void)presentAnimateTransition:(nonnull id <HWPresentingViewControllerContextTransitioning>)context {
  10. NSTimeInterval duration = [context transitionDuration];
  11. UIViewController *fromVC = [context viewControllerForKey:UITransitionContextFromViewControllerKey];
  12. CGFloat statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
  13. CGFloat scale = 1 - statusBarHeight * 2 / CGRectGetHeight(fromVC.view.bounds);
  14. [UIView animateWithDuration:duration * 0.4 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
  15. CATransform3D tran = CATransform3DIdentity;
  16. tran.m34 = -1 / 1000.0f;
  17. tran = CATransform3DRotate(tran, M_PI / 16, 1, 0, 0);
  18. tran = CATransform3DTranslate(tran, 0, 0, -100);
  19. fromVC.view.layer.transform = tran;
  20. } completion:^(BOOL finished) {
  21. [UIView animateWithDuration:duration * 0.6 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
  22. fromVC.view.layer.transform = CATransform3DMakeScale(scale, scale, 1);
  23. } completion:^(BOOL finished) {
  24. }];
  25. }];
  26. }
  27. - (void)dismissAnimateTransition:(nonnull id <HWPresentingViewControllerContextTransitioning>)context {
  28. UIViewController *toVC = [context viewControllerForKey:UITransitionContextToViewControllerKey];
  29. toVC.view.layer.transform = CATransform3DIdentity;
  30. }
  31. @end