push自定义动画
阅读原文时间:2023年07月10日阅读:1

//

//  ViewController.m

//  ViewControllerAnimation

//

//  Created by mac on 15/5/26.

//  Copyright (c) 2015年 BSY. All rights reserved.

//

#import "ViewController.h"

#import "TwoViewController.h"

@interface ViewController ()<``UINavigationControllerDelegate``,``UIViewControllerTransitioningDelegate``>

@property``(``nonatomic``,strong)TwoViewController*two;

@property``(``nonatomic``,strong)``UIViewController *currentViewController;;

@end

@implementation ViewController

- (``void``)viewDidLoad {

[``super viewDidLoad];

self``.title = @``"第一页"``;

self``.view.backgroundColor = [``UIColor grayColor];

self``.Animator = [[BSYAnimator alloc]init];

self``.TransitionAnimator = [[BSYTransitionAnimator alloc]init];

UIButton *button&nbsp; = [``UIButton buttonWithType: UIButtonTypeCustom``];

[button setFrame:CGRectMake(100, 100, 100, 100)];

[button setTitle:@``"Push" forState:``UIControlStateNormal``];

[button setTitleColor:[``UIColor blackColor] forState:``UIControlStateNormal``];

[``self``.view addSubview:button];

[button addTarget:``self action:``@selector``(buttonClick) forControlEvents:``UIControlEventTouchUpInside``];

TwoViewController *two = [[TwoViewController alloc]init];

self``.two = two;

self``.navigationController.delegate = self``;

two.transitioningDelegate = self``;

two.modalPresentationStyle = UIModalPresentationCustom``;

[``self addChildViewController:two];

self``.currentViewController = two;

}

-(``void``)buttonClick

{

[``self``.navigationController pushViewController:``self``.two animated:``YES``];

}

#pragma mark - UINavigationControllerDelegate iOS7新增的2个方法

// 动画特效

- (``id``<``UIViewControllerAnimatedTransitioning``>) navigationController:(``UINavigationController *)navigationController animationControllerForOperation:(``UINavigationControllerOperation``)operation fromViewController:(``UIViewController *)fromVC toViewController:(``UIViewController *)toVC

{

if (operation == UINavigationControllerOperationPush``) {

return self``.Animator;

}``else``{

return nil``;

}

}

#pragma mark - Transitioning Delegate (Modal)

-(``id``<``UIViewControllerAnimatedTransitioning``>)animationControllerForPresentedController:(``UIViewController *)presented presentingController:(``UIViewController *)presenting sourceController:(``UIViewController *)source

{

self``.TransitionAnimator.animationType = AnimationTypePresent;

return self``.TransitionAnimator;

}

-(``id``<``UIViewControllerAnimatedTransitioning``>)animationControllerForDismissedController:(``UIViewController *)dismissed

{

self``.TransitionAnimator.animationType = AnimationTypeDismiss;

return self``.TransitionAnimator;

}

@end