2014-09-26 23 views
16

Próbowałem zmienić czcionkę dla elementów paska kart, ale nie byłem w stanie znaleźć żadnych przykładów Swift. Wiem, że tak to zmieniasz w Celu C:Zmiana czcionki paska kart w Swift

[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"AmericanTypewriter" size:20.0f], UITextAttributeFont, nil] forState:UIControlStateNormal]; 

Ale jak mogę to przetłumaczyć na Swift?

Odpowiedz

37

UITextAttributeFont została zaniechana w iOS 7. Należy użyć wariantu NS Zamiast:

import UIKit 

let appearance = UITabBarItem.appearance() 
let attributes = [NSFontAttributeName:UIFont(name: "American Typewriter", size: 20)] 
appearance.setTitleTextAttributes(attributes, forState: .Normal) 
+0

Dzięki za odpowiedzi, jednak nie wydaje się, aby cokolwiek zmienić ... – user3746428

+0

Nevermind, umieścić kod w awakeFromNib i to naprawiło. Wielkie dzięki! – user3746428

+0

Uwaga: korzystanie z Placu zabaw to świetny sposób na znalezienie tego rodzaju rzeczy. Możesz również rzucić okiem na http://swifter.natecook.com, aby znaleźć niektóre z nazwisk. – AlBlue

15

Oto Swift 3.0 rozwiązanie

UITabBarItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Font-Name", size: 10)!], for: .normal) 
UITabBarItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Font-Name", size: 10)!], for: .selected) 
+3

To nie zmienia dla mnie czcionki dla stanu '.selected'. – AbbasAngouti

+0

@AbbasAngouti - wystarczy tylko skopiować kod i zmienić' .normal' na '.selected' –

2

Ponadto @ odpowiedź Mc.Lover „s jeśli chcesz zastosować tę zmianę do całego paska kart Elementy aplikacji, polecam dodać kod w funkcji application klasy AppDelegate:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

    //Just add this line to get it done.  
    UITabBarItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "IranSansMobile", size: 15)!], for: UIControlState.normal) 

    return true 
} 
3

Włóż to pod didFinishLaunchingWithOptions:

UITabBarItem.appearance() 
    .setTitleTextAttributes(
     [NSAttributedStringKey.font: UIFont(name: "Didot", size: 10)!], 
    for: .normal) 

Działa to w Swift 4