2

我需要缩小 UINavigationBar 的高度(附加到 UINavigationController)

我已经通过 UINavigationControllerDelegate 的 navigationController:didShowViewController 方法完成了这项工作,并且工作正常。

问题是主视图中的可见视图控制器。它并没有调整自身的大小以反映新的导航栏高度。因此,didShowViewController 方法也调整了 viewcontroller 的视图框架的大小,效果很好。

但是,当我去推动一个新的 ViewController 或弹出时,我总是看到在动画过渡到下一个视图期间视图向下移动到原始位置。然后,由于我在 NavControllerDelegate 中的 didShowViewController 中的代码,它会将其移回。

我很好奇确保降级永远不会发生的最佳方法。

我尝试将调整框架大小的代码放入 willShowViewController 中,但这并没有做任何事情。

我还确保作为正在弹出的 UIViewController 的视图的 UIView 框架也具有正确/移位的尺寸。不去那里。

就像我需要在调用 pushViewController 之后和调用 UINavigationController 的 didShowViewController 之前拦截绘图动作。

我已经盯着我的代码好几个小时了……什么也没有。希望这对外面的人有意义。

谢谢!!!

4

1 回答 1

2

我认为另一个选择是将 NavigationControllers navigationBarHidden 设置为 YES。这将完全隐藏导航栏,然后您可以在导航栏所在的位置绘制您想要的任何视图。只需将控件放在包装导航方法(推送、弹出等)的视图上。不过,让它具有与导航栏相同的风格可能是一个挑战。

于 2009-12-07T19:10:24.543 回答