ios - 如何在添加到 keyWindow 的 View 上方呈现模式?

标签 ios objective-c modalviewcontroller keywindow

我已将 View 添加到 [[UIApplication sharedApplication] keyWindow] ,因为我们希望它与导航栏重叠。

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

我的回答

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

然后我使用 [self.navigationController presentViewController:animated:completion]呈现模态,它高于 z 轴上的所有其他内容。

这是添加 UIViewController 的代码到self.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];

最佳答案

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

如果您希望 View 与导航栏重叠,您可以将此 View 添加为导航栏的顶部 subview 。或者您可以将其添加为导航 Controller View 的顶部 subview 。

关于ios - 如何在添加到 keyWindow 的 View 上方呈现模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35855025/

相关文章:

objective-c - 关闭两个模态视图 Controller

ios - 关闭 Storyboard 上的模态视图 Controller

iOS 自定义键盘扩展自动大写

ios - 在 segue 中绘制 vs 编写代码来转换 View ——为什么数据有时不传输?

ios - 在没有 prepareForSegue 的情况下推送到另一个 View Controller

iphone - RKObjectMapping 中的混淆设置映射 - Rest

objective-c - 将 View 的 Alpha 设置为从 0 到 0.5 的动画

iphone - 是否可以将隐藏字段添加到标注 MKMapView?

objective-c - 如何在 Xcode 4.2 中以编程方式创建 UITableView 并使用 NSArray 进行填充?

ios - UITableView 滚动时重新选择行