如何从左边推一个视图控制器在另一

问题描述:

我想打一个抽屉式导航这样的: enter image description here如何从左边推一个视图控制器在另一

我看到了许多第三方函数库,但我想从我自己做起。

这里就是我想:

__block UIViewController *sourceViewController = self; 

NavigationDrawerVC *controller = [[NavigationDrawerVC alloc] initWithNibName:@"NavigationDrawerVC" bundle:nil]; 


__block UIViewController *destinationController = (UIViewController*)controller; 

CATransition* transition = [CATransition animation]; 
transition.duration = 5; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade 
transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom 



[sourceViewController.navigationController.view.layer addAnimation:transition 
                  forKey:kCATransition]; 


[sourceViewController.navigationController pushViewController:destinationController animated:NO]; 

但我getiing O/P是这样的:

enter image description here

当我在按钮点击我的屏幕更改像这样:

enter image description here

我的上一个VIewController也在移动。

我想让它修复。而且我也无法在某个时候阻止它。

+0

事情是这样的:https://*.com/questions/19663692/android-like-navigation-drawer-for-ios? – Newyork167

+0

@ Newyork167我试过... PAN手势没有检测到 – Dalvik

你可能想看看使用一个子控制器。

下面是一个非常简化的代码,它演示了这个概念。它添加了一个子视图控制器并将其动画到屏幕中间。这至少应该给你一个起点:

UIViewController *drawerVC = [[UIViewController alloc] init]; 
drawerVC.view.backgroundColor = [UIColor redColor]; 

[self addChildViewController:drawerVC]; 
drawerVC.view.frame = CGRectMake(-self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height); 
[self.view addSubview:drawerVC.view]; 
[drawerVC didMoveToParentViewController:self]; 

[UIView animateWithDuration:0.3 animations:^{ 
    drawerVC.view.frame = CGRectOffset(drawerVC.view.frame, drawerVC.view.frame.size.width * 0.5, 0); 
}]; 
+0

我已经添加了...但我怎样才能添加平移手势 – Dalvik

+0

@RahulMishra你问如何推抽屉式的视图控制器。如果您在使用平移手势挣扎,我建议您另外提出一个问题,并提供有关什么不工作以及您尝试了什么的更多信息,或者至少更新此工具。 – Artal