2
votes

Comment changer le registre des titres en utilisant prefersLargeTitles?

Je sais qu'il est possible de définir séparément la famille de polices, la taille et la couleur de la police pour les titres «grands» et «petits» en utilisant prefersLargeTitles .

La question est: y a-t-il des options pour que le contrôleur de navigation affiche le «grand titre» dans le panneau de navigation ouvert avec des majuscules?

 entrez la description de l'image ici

J'utilise maintenant la navigation personnalisée Contrôleur:

class MyViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        navigationController?.navigationBar.prefersLargeTitles = true

        let title = "Sign In"
        navigationItem.title = title

        if let nc = navigationController as? MyNavigationController {
            nc.titleSaved = title
        }
    }

}

Définir le titre à partir du contrôle d'affichage:

class MyNavigationController: UINavigationController {

    public var titleSaved: String?

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()

        guard let topItem = navigationBar.topItem else {
            return
        }

        if navigationBar.frame.size.height > 60 {
            topItem.title = topItem.title?.uppercased()
        } else {
            if let titleSaved = titleSaved {
                topItem.title = titleSaved
            } else {
                topItem.title = topItem.title?.applyingTransform(StringTransform(rawValue: "Title"), reverse: false)
            }
        }
    }
}

cette solution fonctionne, mais lorsque vous passez de «grand» title au "petit" titre et à l'envers, ça secoue et ça a l'air assez bogué


2 commentaires

Voulez-vous également augmenter la hauteur de la barre de navigation?


Découvrez cette ​​solution simple.


3 Réponses :


0
votes

vous pouvez essayer comme ceci:

navigationController?.navigationBar.prefersLargeTitles = true 
let NavigationTitle = "Sign in"
navigationController?.navigationBar.topItem?.title = NavigationTitle.uppercased()


0 commentaires

0
votes

Vous essayez simplement de définir un titre de barre de navigation en majuscules. et définissez pregfersLargeTitles sur true

self.navigationController?.navigationBar.prefersLargeTitles = true
self.title = "title".uppercased()

Vérifiez ceci:

 entrez la description de l'image ici


0 commentaires

5
votes

Vous pouvez avoir un titre en majuscule pour «grand titre» et un titre en majuscule pour «petit titre» en utilisant Polices en petites majuscules

Changez titleTextAttributes avec une autre police et changez largeTitleTextAttributes avec une police en majuscules

self.title = "Sign In"
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationController?.navigationBar.titleTextAttributes = [.font:UIFont(name: "OpenSans-Regular", size: 30)!]
self.navigationController?.navigationBar.largeTitleTextAttributes = [.font:UIFont(name: "MyFontRegular", size: 30)!]

Ou vous pouvez personnaliser votre police. J'ai créé une nouvelle police de style avec OpenSans dans http://www.glyphrstudio.com/online/ a>

Vous pouvez le télécharger ici p>

class ViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.title = "Sign In"
        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.red]
        self.navigationController?.navigationBar.largeTitleTextAttributes = [.foregroundColor: UIColor.red,
                                                                             .font:UIFont(name: "Panton-LightCaps", size: 30)!]
    }
}

 entrez la description de l'image ici


0 commentaires