导航栏中从大标题到小标题的切换不流畅iOS 13

Moh*_*d S 4 uinavigationbar uinavigationcontroller ios swift

我的UINavigationController默认值为navigationBar.prefersLargeTitles = true

我将其切换为false当我push 进入新场景时DetailsViewController,通过将其更改为来调用它()viewWillDisappear

override func viewWillDisappear(_ animated: Bool) {
   super.viewWillDisappear(animated)
   navigationController?.navigationBar.prefersLargeTitles = false
}
Run Code Online (Sandbox Code Playgroud)

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

override func willMove(toParent parent: UIViewController?) {
        navigationController?.navigationBar.prefersLargeTitles = true
}
Run Code Online (Sandbox Code Playgroud)

过渡回大标题。

考虑到iOS 12是正确的行为,请观察所附的iOS 13的快照与iOS 12的快照。

iOS 13

iOS 13

iOS 12

iOS 12

mat*_*att 9

你在做什么总是错的。您应该将导航栏设置prefersLargeTitlestrue一次,再也不要触摸它。

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

  • 只需确保调用“self.navigationItem”而不是“self.navigationController.navigationItem” (8认同)
  • 这么好的答案!从来不知道这是同时拥有大标题和小标题的方法! (2认同)