J'essaie de définir la police de la UIBarButtonItem
comme suit:
let barButton = UIBarButtonItem.appearance()
barButton.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "AvenirNext", size: 15], forState: UIControlState.Normal)
Mais il génère une erreur de compilation en disant:
Impossible d'appeler 'init' avec un type de liste d'arguments '($ T7, forState: UIControlState) `
et je n'ai aucune idée de ce que cela signifie. J'ai aussi essayé
barButton.titleTextAttributesForState(UIControlState.Normal) =[NSFontAttributeName...]`
mais il semble que ce ne soit pas assignable
Comment puis-je résoudre ça?
L'initialiseur de UIFont
renvoie une valeur facultative car il peut échouer à cause d'un nom de police mal orthographié, etc.
Vous devez le déballer et vérifier:
if let font = UIFont(name: "AvenirNext", size: 15) {
barButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
}
MISE À JOUR pour Swift 3
if let font = UIFont(name: "AvenirNext", size: 15) {
barButton.setTitleTextAttributes([NSFontAttributeName:font], for: .normal)
}
La définition d'une police personnalisée est un peu délicate, car elle ne possède pas les propriétés font
et title
. J'espère que cette réponse vous aidera.
let font = UIFont(name: "<your_custom_font_name>", size: <font_size>)
var leftBarButtonItem = UIBarButtonItem(title: "<font_hex_code>", style: UIBarButtonStyle.Plain, target: self, action: "buttonClicked:")
leftBarButtonItem.setTitleTextAttributes([NSFontAttributeName:font!], forState: UIControlState.Normal)
self.navigationItem.leftBarButtonItem = leftBarButtonItem
if let font : UIFont = UIFont(name: "Roboto-Regular", size: 15)
{
cancelBarButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
doneBarButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
}
Avec Swift 4
NSFontAttributeName est obsolète , vous pouvez utiliser les valeurs NSAttributedStringKey pour définir des attributs.
if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) {
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: fontStyle]
}