XWCoolAnimator.m 6.23 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
//
//  XWCoolAnimator.m
//  XWTransitionDemo
//
//  Created by wazrx on 16/6/13.
//  Copyright © 2016年 wazrx. All rights reserved.
//

#import "XWCoolAnimator.h"
#import "XWCoolAnimator+XWPortal.h"
#import "XWCoolAnimator+XWPageFlip.h"
#import "XWCoolAnimator+XWFold.h"
#import "XWCoolAnimator+XWMiddlePageFlip.h"
#import "XWCoolAnimator+XWExplode.h"
#import "XWCoolAnimator+XWLines.h"
#import "XWCoolAnimator+XWScanning.h"

@interface XWCoolAnimator ()
@property (nonatomic, weak) UIView *pageFlipTempView;
@end

@implementation XWCoolAnimator{
    XWCoolTransitionAnimatorType _type;
}

- (void)dealloc{
    NSLog(@"coolAnimator销毁了");
}


+ (instancetype)xw_animatorWithType:(XWCoolTransitionAnimatorType)type {
    return [[self alloc] _initWithTransitionType:type];
}

- (instancetype)_initWithTransitionType:(XWCoolTransitionAnimatorType)type{
    self = [super init];
    if (self) {
        _type = type;
        _foldCount = 4;
    }
    return self;
}



- (void)xw_setToAnimation:(id<UIViewControllerContextTransitioning>)transitionContext{
    switch (_type) {
        case XWCoolTransitionAnimatorTypePageFlip: {
            [self xw_setPageFlipToAnimation:transitionContext];
            break;
        }
        case XWCoolTransitionAnimatorTypePageMiddleFlipFromLeft: {
            [self xw_setMiddlePageFlipToAnimation:transitionContext direction:XWMiddlePageFlipDirectionLeft];
            break;
        }
        case XWCoolTransitionAnimatorTypePageMiddleFlipFromRight: {
            [self xw_setMiddlePageFlipToAnimation:transitionContext direction:XWMiddlePageFlipDirectionRight];
            break;
        }
        case XWCoolTransitionAnimatorTypePageMiddleFlipFromTop: {
            [self xw_setMiddlePageFlipToAnimation:transitionContext direction:XWMiddlePageFlipDirectionTop];
            break;
        }
        case XWCoolTransitionAnimatorTypePageMiddleFlipFromBottom: {
            [self xw_setMiddlePageFlipToAnimation:transitionContext direction:XWMiddlePageFlipDirectionBottom];
            break;
        }
        case XWCoolTransitionAnimatorTypePortal: {
            [self xw_setPortalToAnimation:transitionContext];
            break;
        }
        case XWCoolTransitionAnimatorTypeFoldFromLeft: {
            [self xw_setFoldToAnimation:transitionContext leftFlag:YES];
            break;
        }
        case XWCoolTransitionAnimatorTypeFoldFromRight: {
            [self xw_setFoldToAnimation:transitionContext leftFlag:NO];
            break;
        }
        case XWCoolTransitionAnimatorTypeExplode: {
            [self xw_setExplodeToAnimation:transitionContext];
            break;
        }
        case XWCoolTransitionAnimatorTypeHorizontalLines: {
            [self xw_setLinesToAnimation:transitionContext vertical:NO];
            break;
        }
        case XWCoolTransitionAnimatorTypeVerticalLines: {
            [self xw_setLinesToAnimation:transitionContext vertical:YES];
            break;
        }
        case XWCoolTransitionAnimatorTypeScanningFromLeft: {
            [self xw_setScanningToAnimation:transitionContext direction:0];
            break;
        }
        case XWCoolTransitionAnimatorTypeScanningFromRight: {
            [self xw_setScanningToAnimation:transitionContext direction:1];
            break;
        }
        case XWCoolTransitionAnimatorTypeScanningFromTop: {
            [self xw_setScanningToAnimation:transitionContext direction:2];
            break;
        }
        case XWCoolTransitionAnimatorTypeScanningFromBottom: {
            [self xw_setScanningToAnimation:transitionContext direction:3];
            break;
        }
    }
}

- (void)xw_setBackAnimation:(id<UIViewControllerContextTransitioning>)transitionContext{
    switch (_type) {
        case XWCoolTransitionAnimatorTypePageFlip: {
            [self xw_setPageFlipBackAnimation:transitionContext];
            break;
        }
        case XWCoolTransitionAnimatorTypePageMiddleFlipFromLeft: {
            [self xw_setMiddlePageFlipBackAnimation:transitionContext direction:XWMiddlePageFlipDirectionRight];
            break;
        }
        case XWCoolTransitionAnimatorTypePageMiddleFlipFromRight: {
            [self xw_setMiddlePageFlipBackAnimation:transitionContext direction:XWMiddlePageFlipDirectionLeft];
            break;
        }
        case XWCoolTransitionAnimatorTypePageMiddleFlipFromTop: {
            [self xw_setMiddlePageFlipBackAnimation:transitionContext direction:XWMiddlePageFlipDirectionBottom];
            break;
        }
        case XWCoolTransitionAnimatorTypePageMiddleFlipFromBottom: {
            [self xw_setMiddlePageFlipBackAnimation:transitionContext direction:XWMiddlePageFlipDirectionTop];
            break;
        }
        case XWCoolTransitionAnimatorTypePortal: {
            [self xw_setPortalBackAnimation:transitionContext];
            break;
        }
        case XWCoolTransitionAnimatorTypeFoldFromLeft: {
            [self xw_setFoldBackAnimation:transitionContext leftFlag:NO];
            break;
        }
        case XWCoolTransitionAnimatorTypeFoldFromRight: {
            [self xw_setFoldBackAnimation:transitionContext leftFlag:YES];
            break;
        }
        case XWCoolTransitionAnimatorTypeExplode: {
            [self xw_setExplodeBackAnimation:transitionContext];
            break;
        }
        case XWCoolTransitionAnimatorTypeHorizontalLines: {
            [self xw_setLinesBackAnimation:transitionContext vertical:NO];
            break;
        }
        case XWCoolTransitionAnimatorTypeVerticalLines: {
            [self xw_setLinesBackAnimation:transitionContext vertical:YES];
            break;
        }
        case XWCoolTransitionAnimatorTypeScanningFromLeft: {
            [self xw_setScanningBackAnimation:transitionContext direction:1];
            break;
        }
        case XWCoolTransitionAnimatorTypeScanningFromRight: {
            [self xw_setScanningBackAnimation:transitionContext direction:0];
            break;
        }
        case XWCoolTransitionAnimatorTypeScanningFromTop: {
            [self xw_setScanningBackAnimation:transitionContext direction:3];
            break;
        }
        case XWCoolTransitionAnimatorTypeScanningFromBottom: {
            [self xw_setScanningBackAnimation:transitionContext direction:2];
            break;
        }
    }
}





@end