【问题标题】:Swift Small to Large Nav Bar Title Jumpy TransitionSwift Small to Large Nav Bar Title Jumpy Transition
【发布时间】:2019-06-03 21:01:30
【问题描述】:

所以在我的第一个 vc 中,我将导航栏设置为一个大标题。然后我有一个按钮,它转到一个带有小标题的导航栏的 vc。

当我从第二个 vc 回到第一个时,它会显示一小段标题,然后跳到大标题。

这是我在第一个 vc bc 中的代码,它是一个选项卡视图控制器:

    override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.navigationBar.prefersLargeTitles = true
}

这里是viewDidLoad()中第二个vc的代码:

    self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font: UIFont(name: "Avenir-Black", size: 20)!]
    self.navigationController?.navigationBar.prefersLargeTitles = false

This is what I mean about the jumpy transition

谢谢

【问题讨论】:

    标签: swift tabs navbar titlebar


    【解决方案1】:

    在您的第二个 ViewController 上尝试更改 viewWillDisappear 函数中的 NavBarPreference。

    例子:

    func viewWillDisappear(_ animated: Bool){ 
    self.navigationController?.navigationBar.prefersLargeTitles = true
        }
    

    所以在回到第一个 vc 之前,你先更改 NavBar 首选项

    替代解决方案:使用情节提要

    您可以单击所需的 VC,然后单击其 navBarItem,然后转到属性的右侧,然后在大标题上从下拉列表中选择从不、始终或自动。

    Example

    【讨论】:

    • 它仍然做着从小到大的事情。见上面的跳跃过渡gif^^^^
    • 这不应该发生。确保您没有在许多不同的地方更改首选项。顺便说一句,您也可以通过情节提要完成所需的效果...等等我会更新我的答案....
    【解决方案2】:

    简短的回答是不要依赖largeTitleDisplayMode = .automatic(默认值)和prefersLargeTitles = true/false,而是用prefersLargeTitles = true显式设置.always.never(即使使用never也是如此)。

    您需要始终让 prefersLargeTitles 为真,因为来自 Apple 文档:

    如果导航栏的prefersLargeTitles属性为false,则该属性无效,导航项的标题始终显示为小标题。

    这是您在 iOS11/12 上遇到的问题,但在 iOS13 上会有所不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      • 2010-11-26
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多