#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 = [
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