增加 UINavigationBar 的高度并添加在推送时持续存在的自定义视图

Posted

技术标签:

【中文标题】增加 UINavigationBar 的高度并添加在推送时持续存在的自定义视图【英文标题】:Increase height of UINavigationBar and add custom view that persists upon push 【发布时间】:2015-07-17 20:32:42 【问题描述】:

在我的应用程序中,我目前使用标准 UINavigationController,并将多个控制器推送到导航堆栈上。现在,我需要能够显示自定义 UIView(或 UIToolbar even) underneath theUINavigationBar` 并使其在推送新视图控制器后仍然存在,并按需删除此视图。非常类似于 iTunes 中的歌曲信息和控件商店:

现在我只是将此视图作为子视图添加到顶视图控制器的view,因此当执行推送时,此自定义视图不再可见。另一个问题是这个自定义视图与视图控制器的view 内容重叠。

有没有办法实现自定义导航栏,扩展其高度,添加子视图?然后当然删除子视图并在视图不再显示时缩小高度?或者在导航栏下方添加一个视图,自动更新各处的内容插图,使其不在其下方?或者还有什么方法可以做到这一点?

我查看了 Apple 的自定义导航栏示例代码。他们有一个带有自定义视图的扩展高度示例,但他们通过将视图添加到单个视图控制器的视图来实现这一点,因此推送不会保留它。

【问题讨论】:

【参考方案1】:

您可以将视图添加到导航控制器本身,但在视图之间的转换过程中您必须自己处理动画。

[self.navigationController.view addSubview:overlayView];

【讨论】:

以上是关于增加 UINavigationBar 的高度并添加在推送时持续存在的自定义视图的主要内容,如果未能解决你的问题,请参考以下文章

在 ios 7 中如何增加 UINavigationbar 的大小

使用 UIAppearance 移动 UINavigationBar

UINavigationBar + UITabBar 的可用屏幕高度

Swift - UINavigationBar 有时仅包含在屏幕高度中?

UINavigationBar 的高度错误,因为加载时状态栏被隐藏

UINavigationBar titleview 图像未与 UINavigationBar 对齐