Усечение заголовка многострочной панели навигации на iOS13 - PullRequest
1 голос
/ 17 февраля 2020

У меня есть контроллер представления, в котором мне нужно отобразить многострочный заголовок на панели навигации. Для этого я написал такой протокол -

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()
                    }
                }
            }
        }
    }
}

В моем контроллере представления я соответствую этому протоколу, и внутри метода 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")
}

**

Это хорошо работает на iPhone, работающем меньше iOS13.

**

enter image description here

**

Однако на iPhone, работающем больше iOS 13, он просто отображает одна строка, а затем усекается.

**

enter image description here

Произошли ли какие-либо изменения в UINavigationBar в iOS13? Я исследовал и нашел кое-что о цвете фона, но ничего не относилось к многострочному заголовку, используя prefersLargeTitles и largeTitleDisplayMode.

Может кто-нибудь помочь мне получить это на iOS13?

Спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...