web-dev-qa-db-ja.com

ナビゲーションバーの大きなタイトルから小さなタイトルへの切り替えがスムーズではないiOS 13、スティッキー

UINavigationControllerがあり、デフォルト値は_navigationBar.prefersLargeTitles = true_です。

falsePushに変更すると、新しいシーンに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 12iOS 12が正しい動作であることを考慮して、それを行っています。

iOS 13

iOS 13

iOS 12

iOS 12

11
Mohmmad S

あなたがしていることはいつも間違っていました。ナビゲーションバーのprefersLargeTitlestrueに1回設定し、再度タッチしないでください。

表示される大きなタイトルについて各ビューコントローラーが行うことを変更する方法は、そのビューコントローラーが独自のnavigationItemを(viewDidLoadに)設定して、必要なlargeTitleDisplayModeを設定することです。したがって、最初のv.c. .alwaysと2番目は.neverすべてがスムーズになります。

17
matt

同じ問題があり、2番目のViewControllerのストーリーボードにNavigationItemを配置する必要がありました。私のNavigationItemはセグエによって自動的に作成されていて、ビューが表示される前にviewDidLoad()prefersLargeTitleの作成が完了していませんでした。 NavigationItemをストーリーボードに追加すると、この問題が修正され、ストーリーボードのプロパティメニューでprefersLargeTitleを設定できるようになりました。

0
Ben Hardin

私の場合、この問題は、UITabBarControllerの子であるビューコントローラへのセグエ中に発生していました。子ビューコントローラでlargeTitleDisplayModeを設定しても、このバグを修正するには不十分でした。

ナビゲーション項目をUITabBarControllerシーンに追加し、largeTitleDisplayMode.neverとして設定することで問題を解決しました。

0
Teo