2014-10-21 16 views
14

Próbuję ustawić czcionkę UIBarButtonItem tak:Błąd przy uruchamianiu tego UIFont w tekście atrybuty słowniku

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

Ale to generuje błąd kompilatora mówiąc:

nie może powoływać 'init' z typem listy argumentów '($ T7, forState: UIControlState) `

i nie mam pojęcia, co to oznacza. Próbowałem również

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

ale wydaje się, że nie jest przypisane

Jak mogę rozwiązać ten problem?

Odpowiedz

27

inicjatora od UIFont zwraca opcjonalny, ponieważ może to nie ze względu na błędnie nazwy czcionki itp

Musisz rozpakować i sprawdzić:

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

aktualizowana Swift 3

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

Nadal rzuca ten błąd ... I ta składnia pracował dla mnie, dopóki nie zaktualizowana Xcode 6.1 – Eilon

+0

to rozwiązać mój problem, ale też nigdy nie widział ten problem przed 6.1. – Andrew

2

Ustawienie Niestandardowe czcionki jest trochę trudne, ponieważ nie mają oneWłaściwości 210 i title. Mam nadzieję, że ta odpowiedź pomoże ci.

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) 

     }