从UINavigationController-iOS向下设置UINavigationBar位置的动画

从UINavigationController-iOS向下设置UINavigationBar位置的动画,ios,swift,uinavigationcontroller,uinavigationbar,uicontainerview,Ios,Swift,Uinavigationcontroller,Uinavigationbar,Uicontainerview,我有一个UIDABBARCONTROLLER,其中有3个UINavigationController。我想做的是,按下UINavigationController条上的一个按钮,将该条一直下降到UITabBarController条的右上方。我这样做是为了能够以下拉方式显示更多内容,这些内容将填充现在已降低的UINavigationBar上方的区域,然后在向上移动时消失。所以,本质上,我想在UINavigationController的UINavigationBar中移动。我只需要在每个选项卡的

我有一个UIDABBARCONTROLLER,其中有3个UINavigationController。我想做的是,按下UINavigationController条上的一个按钮,将该条一直下降到UITabBarController条的右上方。我这样做是为了能够以下拉方式显示更多内容,这些内容将填充现在已降低的UINavigationBar上方的区域,然后在向上移动时消失。所以,本质上,我想在UINavigationController的UINavigationBar中移动。我只需要在每个选项卡的各个UINavigationController的根视图控制器中使用UINavigationBar的此滑动/上下行为。我试着重新定位导航控制器上的导航条,就像这样

 @IBAction func moveBarDown(sender: AnyObject) {
     self.navigationController?.navigationBar.frame = CGRect(x: 100, y: 500, width: 100, height: 100)
  }  
  //note that I just used bogus values for demonstration purposes.
然而,我得到了这样的东西

如您所见,导航栏一直延伸到顶部,尽管它的高度只有100。这让我相信,我不应该在UINavigationController上调整UINavigationBar的大小并在其周围移动。因此,我们正在思考和研究获得相同功能的其他方法

1) 伪造:我想我可以通过编程方式插入一个相同但“伪造”的导航栏,该导航栏未连接到UINavigationController,隐藏连接到导航控制器的真实UINavigationBar,然后根据需要移动伪造的导航栏。然后,在幻灯片上,我可以将“假”导航栏移回,取消隐藏真实的导航栏,然后删除“假”导航栏

2) 实现我自己的导航控制器:我读到可以使用容器视图实现我自己的导航控制器。我不熟悉做这样的事情,甚至不知道实现自己的UINavigationController是否是一件好事



因此,我的问题是,如何实现在UINavigationController上移动UINavigationBar的预期功能?有没有什么方法让我完全迷失了方向?非常感谢您的任何意见、建议或建议。谢谢。

你的研究已经非常出色了,你的结论也非常准确。UINavigationController的导航栏不是您可以移动或调整大小的,无论是否设置动画。这不是你的导航栏,句号。如果你真的想要一个这样的视图控制器,那就编写你自己的父视图控制器(正如你非常合理地建议的那样)。

你的研究已经非常出色了,你的结论也非常准确。UINavigationController的导航栏不是您可以移动或调整大小的,无论是否设置动画。这不是你的导航栏,句号。如果你真的想要一个这样的视图控制器,那就编写你自己的父视图控制器(正如你非常合理地建议的那样)。

你的研究已经非常出色了,你的结论也非常准确。UINavigationController的导航栏不是您可以移动或调整大小的,无论是否设置动画。这不是你的导航栏,句号。如果你真的想要一个这样的视图控制器,那就编写你自己的父视图控制器(正如你非常合理地建议的那样)。

你的研究已经非常出色了,你的结论也非常准确。UINavigationController的导航栏不是您可以移动或调整大小的,无论是否设置动画。这不是你的导航栏,句号。如果您真的想要一个这样运行的视图控制器,请编写您自己的父视图控制器(正如您非常合理的建议)。

那么,我是要将UINavigationController子类化,还是使用容器视图编写自己的视图控制器?关于将UINavigationController子类化的任何内容都不会将其子对象的位置交给您。最好只编写自己的父视图控制器。在这一点上,它的行为完全取决于你!一开始你甚至不需要使用导航栏。另一种可能是重新思考你的目标。我不太明白它们是什么。如果问题是您需要更多的屏幕空间,并且选项卡栏和导航栏挡住了您的去路,为什么不隐藏导航栏呢?或者为什么不将用户移动到全屏显示的视图控制器中,在那里您完全拥有屏幕?谢谢您的建议,但这并不完全取决于我。因此,如果我理解正确,我有一个父视图控制器,它有导航栏,然后是容器视图。我可以在容器视图上下推和弹出视图控制器吗?谢谢你的帮助。我真的很感激。“我可以在容器视图上下推和弹出视图控制器?”不,你不能“只是”推和弹出视图控制器。推送和弹出是UINavigationController的功能。如果您希望它们成为父视图控制器的功能,则必须编写它们。因此,我是要将UINavigationController子类化,还是要使用容器视图编写自己的子类化?有关将UINavigationController子类化的任何内容都不会将其子类的位置移交给您。最好只编写自己的父视图控制器。在这一点上,它的行为完全取决于你!一开始你甚至不需要使用导航栏。另一种可能是重新思考你的目标。我不太明白它们是什么。如果问题是您需要更多的屏幕空间,并且选项卡栏和导航栏挡住了您的去路,为什么不隐藏导航栏呢?或者为什么不将用户移动到全屏显示的视图控制器中,在那里您完全拥有屏幕?谢谢您的建议,但这并不完全取决于我。因此,如果我理解正确,我有一个父视图控制器,它有导航栏,然后是容器视图。我可以在容器视图上下推和弹出视图控制器吗?谢谢你的帮助。我真的很感激。“我可以在容器视图上下推和弹出视图控制器?”不,你不能“只是”推和弹出视图控制器。推送和弹出是UINavigationCont的功能