如何通过在swift中添加视图来重叠导航栏?

时间:2018-02-05 03:00:12

标签: ios swift navigationbar

我想通过向视图控制器添加新视图来制作自定义侧栏,侧栏将处于黄色背景中。我希望我的侧栏也与视图控制器中的导航栏/项目(绿色背景颜色)重叠。但导航栏/项似乎不能与我的侧栏视图重叠,它似乎只与主视图重叠。

我试图在stackoverflow中找到答案,我找到了Overlap navigation bar on ios 6 with other view,但答案是在Objective-C上,我无法阅读Objective-C :(

如何重叠导航栏/项目?这是我的视图控制器的屏幕截图

enter image description here

我像这样嵌入了导航控制器 enter image description here

2 个答案:

答案 0 :(得分:1)

有很多滑动或抽屉容器的实现。

要在导航栏上方执行操作,包含导航控制器位于另一个视图控制器中。

堆栈看起来像这样。

  • MasterViewController
    • 的UINavigationController
      • RootViewController的
    • 菜单

在这里看到这个:

Swift version of MMDrawerController

答案 1 :(得分:0)

您可以通过更改UIViewController层次结构来执行此操作。为此,您需要三个视图控制器。首先将包含所有内容,我们称之为MasterViewController;第二 - 你的主要内容与导航栏;和第三个抽屉。

ViewController hierarchy diagram

MasterViewController实例化子视图控制器并将其添加到viewDidLoad()中的视图控制器层次结构中。

final class MasterViewController: UIViewController {
    override func viewDidLoad() {

        let drawerViewController = DrawerViewController()
        let mainViewController = MainContentViewController()
        let navigationController = UINavigationController(rootViewController: mainViewController)

        addChildViewController(drawerViewController)
        addChildViewController(navigationController)

        view.addSubview(navigationController.view)
        view.addSubview(drawerViewController.view)
    }
}

现在您可以在navigationController.view内的任何位置放置view {。}}。