2017-08-17 2 views
1

J'ai un UINavigationBar avec un titre de longueur variable. Pour vous assurer que le titre s'intègre sans être tronqué j'ai mis le code suivant dans mon viewDidLoad():Navigation auto-redimensionnéeBarre titre mal placé

let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 40)) 
titleLabel.text = "\(petsName)'s Day" 
titleLabel.font = UIFont.systemFont(ofSize: 30) 
titleLabel.backgroundColor = UIColor.clear 
titleLabel.textColor = UIColor.white 
titleLabel.adjustsFontSizeToFitWidth = true 
titleLabel.minimumScaleFactor = 0.5 
self.navBar.topItem?.titleView = titleLabel 

Cependant, parce que j'ai un élément de bouton de la barre, le titre est déplacé vers la gauche:

navbar

Est-il possible de mettre en œuvre le code ci-dessus, mais maintenir le centre de texte aligné dans la barre de navigation?

S'il vous plaît aidez-moi à résoudre ce problème

+0

Modifier la largeur à la largeur de l'appareil et TitleLabel l'aligner sur le centre. –

Répondre

1

Try this .. peut être travaillé

var view = UIView(frame: CGRect(x: 0, y: 0, width: 150, height: 40)) 
var label = UILabel(frame: CGRect(x: 0, y: 0, width: 150, height: 40)) 
label.text = "Joys Day" 
label.textAlignment = .center 
label.font = UIFont.systemFont(ofSize: 30) 
view.addSubview(label) 
navigationItem?.titleView = view 
+0

Savez-vous pourquoi cette solution abaisse mon texte de titre par rapport à mes autres vues qui ont la même taille de police? Voir ici: http://imgur.com/a/LnQzp – MarksCode

+0

Désolé de mettre votre police à l'étiquette ... étiquette de police non définie dans ce code .. est le problème, puis augmenter la hauteur –

+0

Je suis. Voici mon code complet avec votre solution: https://gist.github.com/MarksCode/ea14a0a984fd8384399893c2d987ebb8 – MarksCode

1

changement titleLabel largeur à la largeur de l'appareil et l'aligner sur le centre. Essayez ceci:

let deviceWidth = UIScreen.main.bounds.size.width 

    let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: deviceWidth, height: 40)) 
    titleLabel.text = "My Test Title" 
    titleLabel.font = UIFont.systemFont(ofSize: 20) 
    titleLabel.backgroundColor = UIColor.clear 
    titleLabel.textColor = UIColor.white 
    titleLabel.adjustsFontSizeToFitWidth = true 
    titleLabel.minimumScaleFactor = 0.5 
    titleLabel.textAlignment = .center 
    self.navigationItem.titleView = titleLabel 

Sortie: enter image description here

+0

Cela ne centre pas l'étiquette dans la barre de navigation comme demandé dans la question. – rmaddy