自定义导航栏高度

Posted

技术标签:

【中文标题】自定义导航栏高度【英文标题】:Custom navigation bar height 【发布时间】:2018-02-27 06:19:55 【问题描述】:

我继承了 UINavigationBar 并自定义了导航栏的高度。现在它有 108pt 的高度。但在所有屏幕中,我在自定义导航栏后面都有 tableview/scrollview 的顶部区域。我试过extend edges under top bar,但它只能移动64pt。

有什么方法可以移动自定义导航栏下方的所有内容,而无需修改顶部约束或设置每个屏幕的内容插入?

【问题讨论】:

【参考方案1】:

你试过了吗-

automaticallyadjustsscrollviewinsets = false

这可以通过故事板和代码来完成。

另外,尝试将导航栏设置为不透明。

希望这会有所帮助。

【讨论】:

我试过自动调整滚动视图插入,但不是不透明的。但即使在改变之后,问题仍然存在。我们在导航栏后面有 ViewController 的视图。【参考方案2】:

首先我会避免改变苹果导航栏的高度。这可能会导致更多问题。如您所见。

无论如何,您都可以更改 tableView 的 contentInset。

tableView.contentInset = UIEdgeInsets(top: HEIGHTOFNAVIGATIONBAR - ADDEDHEIGHT, left: 0, bottom: 0, right: 0)

【讨论】:

但是这样的话,我将不得不在所有屏幕上设置这个(有超过30个屏幕)。不是应该根据新的导航栏高度来改变屏幕的TopLayoutGuide吗? Apple 提供自定义导航栏的选项。我们可以将自定义类设置为导航控制器的导航栏。所以这应该不会导致任何问题(不幸的是它会导致问题)。 如何改变navigationBar的大小?你会覆盖 sizeThatFits 吗? 我过去覆盖了 sizeThatFits。但在 ios 11 中,它不起作用。所以我重写了 setFrame 和 layoutSubViews

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

iOS 11 导航栏高度自定义

小程序怎么自定义导航栏,导航栏放图片设置高度

iPad导航栏自定义高度

导航栏高度和自定义按钮

自定义控制器包含和导航栏高度

小程序自定义头部导航栏