创建导航栏的自定义实现

Posted

技术标签:

【中文标题】创建导航栏的自定义实现【英文标题】:Creating custom implementation of navigation bar 【发布时间】:2014-01-11 08:58:42 【问题描述】:

我希望创建一个行为类似于UINavigationBar 的视图。

我不能简单地自定义栏,因为我希望空间更高,并且除了UIBarButtonItems 之外,我还希望在其上有几个其他子视图。所以,我希望能够创建一个类似的实现,包括浮动/半透明效果。

ios 7 中 Safari 中的地址栏就是一个很好的例子。地址栏上的UITextField 是默认UINavigationBar 上无法添加的。尽管如此,Safari 栏仍然具有透明度。

我不希望它在向下滚动时像在 Safari 中那样缩小,我只是希望它像 UINavigationBar 一样保持不变。我正在考虑向根UIScrollView 添加一个子视图,但这会随着所有内容一起滚动。我希望它保持在顶部,但我希望其他元素能够滚动。

我将如何实现这一点?

【问题讨论】:

【参考方案1】:

如果您确信使用默认 UINavigationBar 无法做到这一点,您可以使用自定义 UINavigationBar 的大小(从顶部)缩小 UIScrollView,然后将导航栏作为子视图添加到根视图(0,0) 坐标。它将独立于滚动视图。

另一方面,如果您需要它在应用程序中持久化并在所有屏幕中使用它,从 AppDelegate 开始进行一些更改是明智的,但这是为了另一个问题。

对于 iOS 7 透明样式部分,请看这里:FXBlurView。祝你好运!

【讨论】:

感谢您的回复!如果我减小 UIScrollView 的大小,当我滚动时,内容将永远不会上升并通过自定义导航栏显示。有没有办法让 UIScrollView 填满整个屏幕并将自定义导航栏分层?另外,自定义导航栏到底是什么?带有背景颜色的 UILabel? 你有什么想法吗?

以上是关于创建导航栏的自定义实现的主要内容,如果未能解决你的问题,请参考以下文章

导航栏的自定义 barTintColor

react-bootstrap - 导航栏的自定义容器类?

Gatsbyjs 中的自定义导航栏

创建一个像 UINavigationBar 这样的半透明视图

如何在不使用导航栏的情况下从导航堆栈中弹出控制器

如何将自定义导航栏链接到导航控制器?