web-dev-qa-db-ja.com

上にスクロールするときに大きなタイトルを非表示にする

ナビゲーションコントローラーに埋め込まれている通常のビューコントローラーがあります。このビューコントローラーには、セーフエリアの制約を使用するテーブルビューがあります。 (私はテーブルビューコントローラーを使用しません)

ナビゲーションコントローラーは大きなタイトルを優先するように設定され、モードは.alwaysに設定されます。ベータ2ではこれは完全に機能しました。そのため、タイトルに入ると大きくなり、スクロールすると小さくなりました(通常のように)。しかし、ベータ3以降、これは機能しなくなりました。

これをオンに戻す方法、またはテーブルビューをスクロールしたときにサイズが小さくなるようにする方法は誰でも知っています。すべての新しいiOS 11アプリの動作が好きですか?

または、これはSwift 4/iOS 11の現在のバージョンのバグですが、メッセンジャーや設定などのアプリは引き続きこのように動作します。

前もって感謝します。

12
Jippe Joosten

私にとっては、ストーリーボードでブール値の「Prefers Large Titles」をtrueに設定した場合、それは大きいままになります。これをコードでオンにすると、期待どおりに機能します!

20
Jippe Joosten

基本的にこのサイトで回避策を見つけました。tableView(またはスクロールを持つ要素)がビュー階層の最初のビューでない場合、大きなタイトルが自動的に非表示になりません。

機能しない例機能する例

https://markusbodner.com/2017/10/08/fix-large-navigation-bar-title-not-hiding-on-scroll-in-ios-11/

WillAppearビューに追加しました:

        if #available(iOS 11.0, *) {
        navigationController?.navigationBar.prefersLargeTitles = true
    } else {
        // Fallback on earlier versions
    }
7
Sergio Trejo
(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y > 0) { //20
        [self.navigationController.navigationBar setPrefersLargeTitles:NO];
    } else {   
        [self.navigationController.navigationBar setPrefersLargeTitles:YES];
    }    
}
1
pideni

プログラマティックレイアウトを使用していて、大きなタイトルで同様の問題が発生しました。私はここに解決策を見つけました: https://stackoverflow.com/a/46692583/131378viewDidLoad()では、largeTitleDisplayModeをオフにしてから再びオンにする必要がありました。これは、大きなタイトルがスクロールで機能する正しい組み合わせでした。

self.navigationItem.largeTitleDisplayMode = .never
self.navigationItem.largeTitleDisplayMode = .always
0
Mark Suman

IBのナビゲーションバーで「大きいタイトルを優先」を確認するか、次を使用します。

navigationController?.navigationBar.prefersLargeTitles = true
0
Nemanja