2014-10-09 13 views
11

więc piszę tę aplikację, która ma kolorowe paski nawigacyjne i czcionkę tytułu w tym, że paski i czcionka UIBarButtonItems powinny być białe iw określonej czcionce. Kiedyś te 2 linie do osiągnięcia, że ​​w AppDelegate ..Xcode 6.1 titleTextAttributes

UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : UIFont(name: "SourceSansPro-Regular", size: 22), NSForegroundColorAttributeName : UIColor.whiteColor()] 
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName : UIFont(name: "SourceSansPro-Regular", size: 22), NSForegroundColorAttributeName : UIColor.whiteColor()], forState: .Normal) 

Ale z Xcode 6.1 otrzymuję komunikat o błędzie w każdej z tych linii, a ja naprawdę nie wiem, co w drodze ..

enter image description here

Atrybuty tekstu to [NSObject: AnyObject] ?. Właśnie to zapisałem ... Czy ktoś ma na to rozwiązanie?

Odpowiedz

37

Myślę, że problemem jest to, że zmienili inicjator UIFont w wersji 6.1, aby mógł on zwrócić nil. To jest poprawne zachowanie, ponieważ jeśli wprowadzisz błędną nazwę czcionki, nie ma możliwości utworzenia instancji UIFont. W tym przypadku twój słownik stanie się [NSObject: AnyObject?], co nie jest takie samo z [NSObject: AnyObject]. Możesz najpierw zainicjować czcionki, a następnie użyć składni if let. Oto jak to zrobić

let font = UIFont(name: "SourceSansPro-Regular", size: 22) 
if let font = font { 
    UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : font, NSForegroundColorAttributeName : UIColor.whiteColor()] 
} 

Lub jeśli jesteś pewien przedmiot czcionka jest nie zamierzam być nil można użyć niejawnie nieopakowanych składni opcjonalne. W takim przypadku ryzykujesz awarię środowiska wykonawczego. Oto jak to zrobić.

UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName : UIFont(name: "SourceSansPro-Regular", size: 22)!, NSForegroundColorAttributeName : UIColor.whiteColor()] 
+0

Tak, to jest to! Dziękuję Ci bardzo. Myślę, że to bardzo mylące, że inicjator może zwrócić zero, ale ma sens ... :) – Ben

+0

Kocham to dzięki! –

Powiązane problemy