【问题标题】:Large title to small title switch in navigation bar is not smooth iOS 13, sticky导航栏大标题到小标题切换不流畅iOS 13,粘滞
【发布时间】:2020-02-06 14:01:32
【问题描述】:

我有一个UINavigationController,默认值为navigationBar.prefersLargeTitles = true

当我将push 切换到一个新场景时,我将它切换为false,让我们称之为(DetailsViewController),将其更改为viewWillDisappear

override func viewWillDisappear(_ animated: Bool) {
   super.viewWillDisappear(animated)
   navigationController?.navigationBar.prefersLargeTitles = false
}

现在在 DetailsViewController 我正在使用 willMove(to parent:)

override func willMove(toParent parent: UIViewController?) {
        navigationController?.navigationBar.prefersLargeTitles = true
}

转换回大标题。

观察 iOS 13 如何执行此操作以及 iOS 12 如何执行此操作的附加快照,考虑到 iOS 12 是正确的行为。

iOS 13

iOS 12

【问题讨论】:

  • 在将细节视图控制器推送到导航堆栈时,您根本不必更改.prefersLargeTitles,它会自动使用小标题,然后在您返回后返回大标题到根视图控制器,据我所知
  • @henrik-dmg 我不确定以前是不是这样,但如果我这样做了,一切都会变成大标题,我已经尝试过了。
  • largeTitleDisplayMode 到 .automatic 你应该会得到想要的过渡。
  • @HarryJ 在哪里?
  • 在您的 viewDidLoad 或导航控制器中,navigationController?.navigationItem.largeTitleDisplayMode = .automatic

标签: ios swift uinavigationcontroller uinavigationbar


【解决方案1】:

你所做的总是错的。您应该将导航栏的prefersLargeTitles 设置为true 一次,并且永远不要再触摸它。

更改每个视图控制器对大标题所做的操作的方法是,该视图控制器将其自己的navigationItem(在其viewDidLoad)设置为具有所需的largeTitleDisplayMode。因此,如果第一个 v.c.有.always,第二个有.never,一切都会顺利。

【讨论】:

  • 这么好的答案!从来不知道这是同时拥有大标题和小标题的方法!
  • 请务必致电 self.navigationItem 而不是 self.navigationController.navigationItem
  • 兄弟,你拯救了我的一天!非常感谢:)
【解决方案2】:

我遇到了同样的问题,不得不在第二个 ViewController 的故事板上放置一个 NavigationItem。我的 NavigationItem 是由 segue 自动创建的,它在 viewDidLoad() 中的 prefersLargeTitle 在视图出现之前还没有完成创建。向情节提要添加 NavigationItem 解决了这个问题,并允许我在情节提要的属性菜单中设置 prefersLargeTitle

【讨论】:

    【解决方案3】:

    在我的情况下,这个问题发生在与 UITabBarController 的子视图控制器的 segue 期间。在子视图控制器上设置largeTitleDisplayMode 不足以修复此错误。

    我通过向 UITabBarController 场景添加导航项并将largeTitleDisplayMode 设置为.never 解决了这个问题。

    【讨论】:

      【解决方案4】:

      我这样解决了这个问题:

      override func viewWillDisappear(_ animated: Bool) {
          title = ""
      }
      

      一切巧妙都很简单))

      【讨论】:

      • 如果我用手指慢慢交换第二个VC会发生什么?同时观察标题
      • 据了解,过渡是由一个按钮组织的,不可能用手指减慢这个过程。标题在应用程序的不同生命周期中恢复。
      猜你喜欢
      • 2020-03-14
      • 1970-01-01
      • 2020-07-09
      • 2018-03-04
      • 2012-03-26
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多