【问题标题】:How to Push a ViewController from Left Over another如何将 ViewController 从左推到另一个上
【发布时间】:2016-01-29 05:30:35
【问题描述】:

我想做一个这样的导航抽屉:

我看到了很多第三方库。但我想自己动手。

这是我正在尝试的:

   __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];

但我是这样的:

当我点击按钮时,我的屏幕变化如下:

我以前的 VIewController 也在移动。

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

【问题讨论】:

标签: ios objective-c uiviewcontroller uinavigationcontroller xcode6


【解决方案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);
}];

【讨论】:

  • 我已经添加了...但是如何添加平移手势
  • @RahulMishra 您问如何推动类似抽屉的视图控制器。如果您在使用平移手势时遇到困难,我建议您提出一个单独的问题,并提供有关什么不起作用以及您尝试过什么的额外信息,或者至少更新这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多