IOS 11では、prefersLargeTitlesを有効にすると、システムアプリはすべて、下にスクロールするとナビゲーションバーを圧縮します。
自分のアプリでこれを実装する方法がわかりませんが、バーはデフォルトで同じままです。
私が見ることができるのはスワイプでバーを非表示にすることだけですが、それはバーを圧縮するのではなく、バー全体を非表示にします。
これは、Xcode 9ベータで作成され、新しいストーリーボードが追加された空のプロジェクトです。
システムアプリと同じ動作をするために何をする必要がありますか?
Interface Builder/Storyboardで大きなタイトルに関しては何も設定しないでくださいコードのみ。それは私のために働いた。
そのため、ストーリーボードのナビゲーションバーで、[大きなタイトルを優先する]がオフになっています。
ビューコントローラの場合:
self.navigationController?.navigationBar.prefersLargeTitles = true
この問題はさまざまな理由で人々に起こっているようです。上記の答えはどれも私を助けませんでした、しかしここにDID仕事...
ストーリーボードのビュー階層である原因を見つけるために、アプリを分解しました。 UITableView
ビューがViewControllerの最初のビューになっているようです。 UITableView
の後ろに2つのUIImageView
があり、それが問題の原因でした。それらのUIImageView
sを削除すると、すべてが正しく機能しました。
私の修正:コードでUIView
を作成し、それに2つの画像ビューを追加してから、そのUIView
をUITableview.backgroundView
に追加しました。
これが誰かを助けることを願っています。
古いiOSバージョンをターゲットにする必要がある場合は、割り当てを可用性チェックでラップする必要もあります。
if #available(iOS 11, *) {
self.navigationController?.navigationBar.prefersLargeTitles = true
}
if #available(iOS 11.0, *) {
navigationController?.navigationBar.prefersLargeTitles = true
navigationController?.navigationBar.topItem?.title = "Hello"
navigationController?.navigationItem.largeTitleDisplayMode = .automatic
let attributes = [
NSAttributedStringKey.foregroundColor : UIColor.red,
]
navigationController?.navigationBar.largeTitleTextAttributes = attributes
} else {
// Fallback on earlier versions
}
http://iosrevisited.blogspot.in/2017/09/navigation-bar-with-large-titles-and.html