2017-09-20 6 views
1

UINavigationControllerの2つのUIViewControllerがあります。大きなタイトルのジャンプを伴うバックボタンアニメーション

私たちは viewWillAppear(_ animated: Bool)の内側に最初に提示VCでは

:二VCへのトランジションアニメーション

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    if #available(iOS 11.0, *) { 
     navigationController?.navigationBar.prefersLargeTitles = false 
    } 
... 

:我々はviewWillAppear(_ animated: Bool)の内部とその動作を非アクティブ二VCの内部

override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     if #available(iOS 11.0, *) { 
      navigationController?.navigationBar.prefersLargeTitles = true 
      navigationController?.navigationItem.largeTitleDisplayMode = .always 
     } 
.... 

を自動的に生成された戻るボタンをタップすると、ナビゲーションコントローラのタイトルが、たとえばMeのように通常のgrow to large titleのアニメーションの代わりに、奇妙なjump to large titleを作成しますssagesアプリケーション。

「戻る」操作としてタブバーアイコンをタップすると、正しい遷移アニメーションが実行されます。

何が原因で問題が発生する可能性がありますか、どのように修正できますか?あなたはfalseprefersLargeTitlesを設定する必要はありませんlargeTitleDisplayMode .neverには設定された第2のビューコントローラ上の

+0

可能な複製(https://stackoverflow.com/questions/45144324/hide-large-title-when-scrolling-up) – BennX

答えて

1

これを明確にするために、ナビゲーションコントローラーではなく、ビューコントローラーのnavigationItemに直接largeTitleDisplayModeを設定する必要があります。 [上にスクロールするときに大きなタイトルを非表示にする]の

self.navigationItem.largeTitleDisplayMode = .never // This fixes the issue 
self.navigationController?.navigationItem.largeTitleDisplayMode = .never // This doesn't work/Title will stay large 
+1

これはにナビゲーションバーが発生します大きいままでバックアニメーションが正しいように見えます。私は第二のVCが「小さなタイトル」を持っていることを望んでいます、最初のものは大きなものです。 'prefersLargeTitles'をfalseに設定すると、タイトルを小さくするだけです。 – BennX

+0

@BennX、これは適切な解決策です、私は同じ問題を抱えていました。 –

+0

素晴らしいです、これは動作します! – sabiland

関連する問題