1

我想打一個抽屜式導航這樣的: 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://stackoverflow.com/questions/19663692/android-like-navigation-drawer-for-ios? – Newyork167

+0

@ Newyork167我試過... PAN手勢沒有檢測到 – Dalvik

回答

1

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

下面是一個非常簡化的代碼,它演示了這個概念。它添加了一個子視圖控制器並將其動畫到屏幕中間。這至少應該給你一個起點:

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

相關問題