2

我添加了一个视图[[UIApplication sharedApplication] keyWindow],因为我们希望它与导航栏重叠。

现在我们想要点击视图上的一个按钮并以模态方式打开一个窗口,最好使用presentViewController. 有没有办法让这个模态视图出现在 keyWindow 视图上方(在 z 轴上)?

我的答案

我最终将我的第一个自定义添加UIViewControllerself.tabBarController. 这允许UIViewController重叠导航栏和标签栏。

然后我[self.navigationController presentViewController:animated:completion]用来呈现模态,它在 z 轴上高于一切。

这是添加UIViewControllerself.tabBarController

        MyCustomViewController * overlayView = [[MyCustomViewController alloc]
                      initWithNibName:@"MyCustom"
                      bundle:nil];

        UIViewController *parentViewController = self.tabBarController;
        [modalView willMoveToParentViewController:parentViewController];

        // set the frame for the overlayView
        overlayView.view.frame = parentViewController.view.frame;

        [parentViewController.view addSubview: overlayView.view];

        [parentViewController.view needsUpdateConstraints];
        [parentViewController.view layoutIfNeeded];

        // Finish adding the overlayView as a Child View Controller
        [parentViewController addChildViewController: overlayView];
        [overlayView didMoveToParentViewController:parentViewController];
4

1 回答 1

0

您应该重新考虑添加叠加视图的方式。

如果您希望视图与导航栏重叠,您可以将此视图添加为导航栏的顶部子视图。或者您可以将其添加为导航控制器视图的顶部子视图。

于 2016-03-07T22:35:02.600 回答