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

Animating down the position of a UINavigationBar from a UINavigationController - iOS

我有一个 UITabBarController,里面有 3 个 UINavigationController。我想要做的是按下 UINavigationController 栏上的按钮,将栏一直向下放到 UITabBarController 栏的正上方。我这样做是为了以下拉方式显示更多内容,这些内容将填充现在降低的 UINavigationBar 上方的区域,然后在它向上移动时消失。所以,本质上,我想在 UINavigationController 的 UINavigationBar 周围移动。我只需要在每个选项卡的相应 UINavigationControllers 的根视图控制器中 UINavigationBar 的这种 slide/up 向下行为。我试过像这样重新定位 UINavigation 控制器上的栏...

 @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) 伪造它:我想我可以通过编程插入一个相同但 "fake" 未连接到 UINavigationController 的导航栏,隐藏附加到导航控制器的真实 UINavigationBar,然后移动假的根据需要绕一圈。然后,在向上滑动时,我可以将 "fake" 导航栏向上移动,取消隐藏真正的导航栏,然后删除 "fake" 导航栏。

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

所以,我的问题是,如何实现在 UINavigationController 上移动 UINavigationBar 的所需功能?有什么办法让我完全想念吗?非常感谢任何意见、建议或建议。谢谢

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