9

ナビゲーション バーに複数行のタイトルを表示する必要があるビュー コントローラーがあります。このために、私はこのようなプロトコルを書きました -

import UIKit

protocol CustomNavigationBar {
    func setupNavigationMultilineTitle(titleText: String, prefersLargeTitles: Bool, largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode)
}

そしてそれを拡張しました-

extension CustomNavigationBar where Self : UIViewController {

    func setupNavigationMultilineTitle(titleText: String, prefersLargeTitles: Bool = true, largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode = .automatic ) {

        self.navigationController?.navigationBar.prefersLargeTitles = prefersLargeTitles
        self.navigationController?.navigationItem.largeTitleDisplayMode = largeTitleDisplayMode
        self.navigationController?.navigationBar.largeTitleTextAttributes = [
            NSAttributedString.Key.foregroundColor: UIColor.black,
            NSAttributedString.Key.font: UIFont.systemFont(ofSize: 18, weight: .semibold)
        ]
        self.title = titleText

        if let navBarSubViews = self.navigationController?.navigationBar.subviews {
            for navItem in navBarSubViews {
                for itemSubView in navItem.subviews {
                    if let largeLabel = itemSubView as? UILabel {
                        largeLabel.text = self.title
                        largeLabel.numberOfLines = 0
                        largeLabel.lineBreakMode = .byWordWrapping
                        largeLabel.sizeToFit()
                    }
                }
            }
        }
    }
}

私のView Controllerでは、このプロトコルに準拠し、viewDidAppearメソッド内で、setupNavigationMultilineTitleメソッドを次のように呼び出します-

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    self.setupNavigationMultilineTitle(titleText: "This is created for testing This is created for testing This is created for testing This is created for testing This is created for testing")
}

**

これは、iOS13 よりも古いバージョンの iPhone でうまく機能します。

**

ここに画像の説明を入力

**

ただし、iOS 13 以降を実行している iPhone では、1 行だけ表示されてから切り捨てられます。

**

ここに画像の説明を入力

iOS13 で UINavigationBar に変更はありますか? 背景色について調べて見つけましたが、prefersLargeTitles と largeTitleDisplayMode を使用した複数行のタイトルに関連するものは何もありませんでした。

誰かがiOS13でこれを取得するのを手伝ってもらえますか?

ありがとう!!

4

0 に答える 0