多行导航栏标题在 iOS13 上被截断

let*_*way 8 uinavigationbar ios large-title preferslargetitles ios13

我有一个视图控制器,我需要在导航栏上显示多行标题。为此,我写了一个这样的协议 -

import UIKit

protocol CustomNavigationBar {
    func setupNavigationMultilineTitle(titleText: String, prefersLargeTitles: Bool, largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode)
}
Run Code Online (Sandbox Code Playgroud)

然后扩展它——

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()
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的视图控制器中,我符合这个协议,在 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")
}
Run Code Online (Sandbox Code Playgroud)

**

这在运行低于 iOS13 的 iPhone 上运行良好。

**

在此处输入图片说明

**

但是,在运行高于 iOS 13 的 iPhone 上,它只显示一行然后截断。

**

在此处输入图片说明

iOS13 的 UINavigationBar 有什么变化吗?我使用prefersLargeTitles和largeTitleDisplayMode研究并发现了一些关于背景颜色但与多行标题无关的内容。

有人可以帮我在iOS13上解决这个问题吗?

谢谢!!