2014-10-21 4 views
14

Ich versuche, die Schriftart des UIBarButtonItem wie zu setzen, so:Fehler, wenn sie in einem Text ein UIFont Instanziieren Attribute Wörterbuch

let barButton = UIBarButtonItem.appearance() 
barButton.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "AvenirNext", size: 15], forState: UIControlState.Normal) 

Aber es wirft einen Compiler-Fehler zu sagen:

nicht aufrufen 'init' mit einer Argumentliste Typ ‚($ T7, forState: UIControlState)`

und ich habe keine Ahnung, was das bedeutet. Ich habe auch versucht,

barButton.titleTextAttributesForState(UIControlState.Normal) =[NSFontAttributeName...]` 

aber es scheint, dass es nicht belegbar ist

Wie kann ich dieses Problem lösen?

Antwort

27

Der Initialisierer von UIFont optional gibt, weil es wegen falsch geschriebenen Schriftnamen fehlschlagen usw.

Sie haben es auspacken und prüfen:

if let font = UIFont(name: "AvenirNext", size: 15) { 
    barButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal) 
} 

AKTUALISIERTEN für Swift 3

if let font = UIFont(name: "AvenirNext", size: 15) { 
    barButton.setTitleTextAttributes([NSFontAttributeName:font], for: .normal) 
} 
+1

Noch diesen Fehler zu werfen ... Und diese Syntax für mich gearbeitet, bis ich zu Xcode aktualisiert 6.1 – Eilon

+0

Das ist mein Problem gelöst, aber ich hatte auch dieses Problem noch nie zuvor gesehen 6.1. – Andrew

2

Einstellung Benutzerdefinierte Schriftart ist ein wenig knifflig, da sienicht haben 210 und title Eigenschaften. Hoffe, diese folgende Antwort wird dir helfen.

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 
1
if let font : UIFont = UIFont(name: "Roboto-Regular", size: 15) 
     { 
      cancelBarButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal) 
      doneBarButton.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal) 

     }