0

如何呈现一个UINavigationController这样的视图,它所呈现的视图在背景中仍然可见?

我的经验是,UINavigationController它将剪辑其视图下方的任何内容,因此设置UINavigationController.view.alpha将显示固定的颜色背景,而不是呈现视图的内容。

这可以改变吗?

编辑

我对导航栏不感兴趣,但对导航控制器管理的全部内容不感兴趣。

4

3 回答 3

4

问题不在于 UINavigationController,而在于您以模态方式呈现它。以模态方式呈现的 ViewController 永远不会是透明的。

您可以通过将 UINavigationControllers 视图作为子视图添加到主 UIWindow 来伪造模态演示。

在 XCode 中进行测试时,此示例适用于我:

   UIViewController *viewController = [[UIViewController alloc] init];
   viewController.view.backgroundColor = [[UIColor greenColor] colorWithAlphaComponent:0.35];

   UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:viewController];

   [[[[UIApplication sharedApplication] delegate] window] addSubview:navCon.view];

当然,您必须自己进行任何动画过渡,但使用动画块应该是微不足道的。

于 2013-02-06T14:09:10.370 回答
1

现在有一种方法可以使用 iOS7 自定义转换来实现这一点,这种方式:

MyController * controller = [MyController new];
[controller setTransitioningDelegate:self.transitionController];
controller.modalPresentationStyle = UIModalPresentationCustom;
[self controller animated:YES completion:nil];

要创建自定义过渡,您需要两件事:

  • 一个 TransitionDelegate 对象(实现 <UIViewControllerTransitionDelegate>
  • 一个“AnimatedTransitioning”对象(实现<UIViewControllerAnimatedTransitioning>

您可以在本教程中找到有关自定义转换的更多信息:http: //www.doubleencore.com/2013/09/ios-7-custom-transitions/

于 2014-01-17T09:56:04.743 回答
0

if you wish this behavior you can not use a UINavigationController, as you say the navigation controller clip the view of the content controller. To do what you want you should add a navigator bar to your view instead, and simulate the actions of the navigation controller. To create a back button similar to the controller read this article

于 2013-02-06T13:46:04.800 回答