Je développe une application dans Swift 2.2. Maintenant, je veux changer la police et la couleur du bouton Précédent pour une vue donnée. La vue en question a un contrôleur de navigation en tant que contrôleur parent.
J'ai essayé d'exécuter les deux lignes suivantes dans viewDidLoad de mon ViewController
self.navigationController!.navigationItem.backBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal)
self.navigationItem.backBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal)
Aucune des deux ne génère d'erreurs, mais cela ne fait aucune différence pour le bouton Précédent. J'ai aussi essayé d'exécuter ces deux
self.navigationController!.navigationItem.leftBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal)
self.navigationItem.leftBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal)
Cela jette cependant une erreur (erreur qui déroule nil). Comment changer la police et la couleur du bouton de retour de la barre de navigation correctement? J'ai l'impression de ne pas modifier les bons éléments ...
Si vous voulez définir la même couleur pour barrer les boutons implicitement, alors dans votre écriture appdelegate
in didfinishlaunchingwithoption
,
UINavigationBar.appearance().tintColor = UIColor.whiteColor() //your desired color here
Mettre à jour :
mettre cela dans appdelegae,
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal) // your textattributes here
Mise à jour 2:
UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UINavigationBar.classForCoder()]).setTitleTextAttributes(["attribute" : "value"], forState: .Normal)
J'espère que ça va aider :)
Réponse rapide de Swift 3.0 (basée sur la réponse de Lion):
let newFont = UIFont(name: "Avenir Next", size: 16.0)!
let color = UIColor.white
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UINavigationBar.classForCoder() as! UIAppearanceContainer.Type]).setTitleTextAttributes([NSForegroundColorAttributeName: color, NSFontAttributeName: newFont], for: .normal)
Fonctionne un régal, pour ceux qui ont déjà réussi à personnaliser d'autres parties de leurs barres de navigation, mais pas le bouton retour!
Je pense que vous devriez le changer dans le vc avant votre vc réel. Regardez: UINavigationItem
Edit: Par exemple, vous pouvez écrire:
let item = UIBarButtonItem(title: "Text goes here", style: .Plain, target: self, action: #selector(self.navigationController?.popViewControllerAnimated(_:)))
item.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Helvetica-Bold", size: 23)!], forState: .Normal)
navigationItem.backBarButtonItem = item
dans votre méthode prepareForSegue.
créer un bouton personnalisé et le faire comme vous voulez et ajouter une action pour revenir en arrière
func addBackBarButtonOnNavigationBar(){
// add image here
let searchImage:UIImage = UIImage(named: "back button image")!
var backBtn:UIBarButtonItem = UIBarButtonItem(image: searchImage, style: UIBarButtonItemStyle.Plain, target: self, action: #selector(classname.buttonActionMethodName(_:)))
backBtn.tintColor = UIColor.lightGrayColor()
if let font = UIFont(name: "AvenirNext", size: 15) {
backBtn.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
}
self.navigationItem.leftBarButtonItem = backBtn
}
func buttonActionMethodName(){
self.navigationController!.popViewControllerAnimated(true)
}
Utilisez le code suivant:
navigationController?.navigationBar.barTintColor = UIColor.purpleColor()
navigationController?.navigationBar.tintColor = UIColor.whiteColor()
changer de couleur selon vos besoins
Swift 4
dans AppDelegate.Swift
UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 15)!], for: .normal)
dans Swift 4.2
to change back button color
self.navigationController?.navigationBar.tintColor = .white