transitionFromView方法的使用

transitionFromView方法的使用

效果

源码

//
//  ViewController.m
//  TransitionFromView
//
//  Created by YouXianMing on 16/5/30.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

#import "ViewController.h"

typedef enum : NSUInteger {
    
    kBottomView = 1000,
    kTopView,
    
} EViewControllerTag;

@interface ViewController () {

    UIView *redView;
    UIView *yellowView;
    UIView *containerView;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    
    [super viewDidLoad];
    
    // ContainerView
    containerView         = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 350)];
    containerView.center  = self.view.center;
    [self.view addSubview:containerView];
    
    // BottomView
    redView                 = [[UIView alloc] initWithFrame:containerView.bounds];
    redView.tag             = kBottomView;
    redView.backgroundColor = [UIColor redColor];
    [containerView addSubview:redView];
    
    // TopView
    yellowView                 = [[UIView alloc] initWithFrame:containerView.bounds];
    yellowView.tag             = kTopView;
    yellowView.backgroundColor = [UIColor yellowColor];
    [containerView addSubview:yellowView];
    
    // Button
    UIButton *button = [[UIButton alloc] initWithFrame:self.view.bounds];
    [button addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

- (void)buttonEvent:(UIButton *)button {
    
    button.enabled = NO;
    
    [UIView transitionFromView:[containerView viewWithTag:kTopView]
                        toView:[containerView viewWithTag:kBottomView]
                      duration:0.5f
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    completion:^(BOOL finished) {
                        
                        button.enabled = YES;
                        
                        if ([[containerView viewWithTag:kBottomView] isEqual:redView]) {
                            
                            [containerView insertSubview:yellowView belowSubview:redView];
                            redView.tag    = kTopView;
                            yellowView.tag = kBottomView;
                            
                        } else {
                        
                            [containerView insertSubview:redView belowSubview:yellowView];
                            redView.tag    = kBottomView;
                            yellowView.tag = kTopView;
                        }
                    }];
}

@end

细节

原文地址:https://www.cnblogs.com/YouXianMing/p/5542634.html