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

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

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

【问题讨论】:

    标签: uitableview uiviewcontroller autolayout uinavigationbar ios11


    【解决方案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
    猜你喜欢
    • 2012-12-10
    • 2023-04-07
    • 2013-11-19
    • 2018-02-02
    • 1970-01-01
    • 2022-07-18
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多