如何呈现一个UINavigationController
这样的视图,它所呈现的视图在背景中仍然可见?
我的经验是,UINavigationController
它将剪辑其视图下方的任何内容,因此设置UINavigationController.view.alpha
将显示固定的颜色背景,而不是呈现视图的内容。
这可以改变吗?
编辑
我对导航栏不感兴趣,但对导航控制器管理的全部内容不感兴趣。
如何呈现一个UINavigationController
这样的视图,它所呈现的视图在背景中仍然可见?
我的经验是,UINavigationController
它将剪辑其视图下方的任何内容,因此设置UINavigationController.view.alpha
将显示固定的颜色背景,而不是呈现视图的内容。
这可以改变吗?
编辑
我对导航栏不感兴趣,但对导航控制器管理的全部内容不感兴趣。
问题不在于 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];
当然,您必须自己进行任何动画过渡,但使用动画块应该是微不足道的。
现在有一种方法可以使用 iOS7 自定义转换来实现这一点,这种方式:
MyController * controller = [MyController new];
[controller setTransitioningDelegate:self.transitionController];
controller.modalPresentationStyle = UIModalPresentationCustom;
[self controller animated:YES completion:nil];
要创建自定义过渡,您需要两件事:
<UIViewControllerTransitionDelegate>
)<UIViewControllerAnimatedTransitioning>
)您可以在本教程中找到有关自定义转换的更多信息:http: //www.doubleencore.com/2013/09/ios-7-custom-transitions/
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