// // XWCoolAnimator+XWFold.m // XWTransitionDemo // // Created by wazrx on 16/6/13. // Copyright © 2016年 wazrx. All rights reserved. // #import "XWCoolAnimator+XWFold.h" #import "UIView+Snapshot.h" @implementation XWCoolAnimator (XWFold) - (void)xw_setFoldToAnimation:(id)transitionContext leftFlag:(BOOL)left { [self _xw_animation:transitionContext flag:left duration:self.toDuration]; } - (void)xw_setFoldBackAnimation:(id)transitionContext leftFlag:(BOOL)left { [self _xw_animation:transitionContext flag:left duration:self.backDuration]; } - (void)_xw_animation:(id)transitionContext flag:(BOOL)flag duration:(NSTimeInterval)duration{ UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; UIView *toView = toVC.view; UIView *fromView = fromVC.view; UIView *containerView = [transitionContext containerView]; toView.frame = [transitionContext finalFrameForViewController:toVC]; toView.frame = CGRectOffset(toView.frame, toView.frame.size.width, 0); [containerView addSubview:toView]; CATransform3D transform = CATransform3DIdentity; transform.m34 = -0.005; containerView.layer.sublayerTransform = transform; CGSize size = toView.frame.size; float foldWidth = size.width * 0.5 / (float)self.foldCount ; NSMutableArray* fromViewFolds = [NSMutableArray new]; NSMutableArray* toViewFolds = [NSMutableArray new]; UIImage *fromImage = fromView.snapshotImage; UIImage *toImage = toView.snapshotImage; for (int i=0 ;i