UITableView を UINavigationController でラップした、基本的な UIViewController を実装してみた。prefersLargeTitles`をtrueに設定した。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.title = "Coffees"
}
しかし、ビューをスクロールするまでタイトルは小さいままで、その時点で拡大されます。この呼び出しを UINavigationController を作成する場所に移動してみましたが、効果はありませんでした。prefersLargeTitles` を設定するときに navigationController が nil でないことは確認している。
このプロパティは別の場所で更新する必要がありますか?それともRadarに申請すべきでしょうか?
更新:
これは、ビューに UITableView
が含まれているか、それ自体が UITableViewController
である場合のみ発生するようだ。
ストーリーボードでは、Navigation Item'のLarge Title
をNever
に設定しました。
ナビゲーションアイテム]1の
ViewController's viewDidLoad メソッドで、以下を設定した。
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.largeTitleDisplayMode = .always
ちょうどこれと同じ問題があり、私の場合、Swift 3 を搭載した iOS 10 で動作していた(Swift 3 を搭載した iOS 11 でも動作する)Storyboard 構造が Swift 4 を搭載した iOS 11 で問題を引き起こしていたことが判明したのです。
詳しく説明すると
私はストーリーボードに通常のUIViewControllerがあり、それをUINavigationControllerのサブクラスに設定していました(私の階層はUITabBarControllerサブクラス→UINavigationControllerサブクラス→UITableViewControllerサブクラスと、あなたと同様になっています)。
iOS 10では、これは問題なく動作しました。
iOS 11では、既存のSwift 3アプリを実行すると、これも問題なく動作します。
しかし、iOS 11 で実行する Swift 4 アプリで、私はあなたが説明したのと同じ症状 (大きなタイトルは、ビューを下に引っ張る/スクロールするときにのみ表示される) を見ていました。
修正するために、私はストーリーボード内のUIViewControllerベースの要素を実際のUINavigationControllerインスタンス(ストーリーボード内で明示的にUINavigationBarを含む - UIViewControllerインスタンスがストーリーボード内で明示的にその要素を持っていなかったので、私はこれが問題の核心が発生する場所であると直感しました)に置き換えたのです。
とにかく、これで問題が解決しました。
私にとっては、Swift 3 の iOS 10 と Swift 3 の iOS 11 の両方で動作するので、これは Swift 4 ベースのリグレッションのように見えるので、レーダーをファイルします。