2010-12-04 5 views

Antwort

0

Wenn ich Ihre Frage richtig verstehe, möchten Sie die Farbe des Textes auf dem UITabBarItem s anpassen. Leider ist es nicht so flexibel. Wenn du das vorhast (wenn du das Design nicht mit der Hilfe eines Profis durchdacht hast, empfehle ich dagegen!), Musst du einige beängstigende Dinge tun, um das zu erreichen.

Ich würde vorschlagen, durch die Unteransichten der UITabBar (so viele Ebenen wie nötig) zu iterieren, und auf der Suche nach UILabel Objekte. Wenn Sie einige finden, können Sie ihre Farbe ändern. Wenn nicht, bedeutet das, dass es anders implementiert ist (wahrscheinlich in einer -drawRect: Methode irgendwo); Wenn dies der Fall ist, sollten Sie wirklich aufgeben.

Viel Glück auf was auch immer Sie sich entscheiden.

+0

@ jonathan Sterling ...... dank Geck ...... ich werde versuchen, es –

+0

Kein Problem! :-) –

-1

, die von -drawRect: möglich ist, aber tut, dass Sie stark zunehmende Chancen Ihrer App von App Store abgelehnt

+0

Was? Drawrect ist die Standardmethode zum Erstellen einer UIView. – quantumpotato

22

Mit dem UIAppearance Protokoll (iOS5 +) ist dies nun möglich, und eigentlich recht einfach.

[UITabBarItem.appearance setTitleTextAttributes:@{ 
     UITextAttributeTextColor : [UIColor greenColor] } forState:UIControlStateNormal]; 

[UITabBarItem.appearance setTitleTextAttributes:@{ 
     UITextAttributeTextColor : [UIColor purpleColor] }  forState:UIControlStateSelected]; 

Bitte entschuldigen Sie die schrecklichen Farben! Dies ist

+3

Vielen Dank für diese Antwort! Für iOS7 + ist UITextAttributeTextColor veraltet und Sie können jetzt NSForegroundColorAttributeName verwenden. – Will

1

was für mich endlich geklappt:

1) Ausgewählte Textfarbe

[[UIView appearance] setTintColor:someColor]; 

2) Nicht ausgewählte Text (ändert sich auch die Bildfarbe)

[[UITabBar appearance] setTintColor:anotherColor]; 
2

nur Dinge zu klären ein bisschen ...

Wenn Sie die Darstellung für alle Registerkartenelemente ändern möchten, verwenden Sie:

Objective-C:

[[UITabBarItem appearance] setTitleTextAttributes:@{UITextAttributeTextColor :[UIColor someColor]} forState:UIControlStateSelected]; 

Swift:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.someColor()], forState: .Selected) 

jedoch, wenn Sie nur das Aussehen eines einzelnen Elements festlegen möchten tun es etwa so:

Ziel-C:

[self.tabBarItem setTitleTextAttributes:@{UITextAttributeTextColor :[UIColor someColor]} forState:UIControlStateSelected]; 

Swift:

tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.someColor()], forState: .Selected) 

Hinweis: tabBarItem ist eine Eigenschaft auf UIViewController.Dies bedeutet, dass, während jede UIViewController diese Eigenschaft hat, es möglicherweise nicht die tabBarItem Sie suchen. Dies ist häufig der Fall, wenn Ihr View-Controller in einem UINavigationController eingeschlossen ist. In diesem Fall greifen Sie auf den tabBarItem des Navigationscontrollers und nicht auf den Controller im Stammverzeichnis (oder anderen) des Viewers zu.

1

Dies ist die schnelle Version: -

for item in self.mainTabBar.items! { 

    let unselectedItem: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()] 
    let selectedItem: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()] 
    item.setTitleTextAttributes(unselectedItem as? [String : AnyObject], forState: .Normal) 
    item.setTitleTextAttributes(selectedItem as? [String : AnyObject], forState: .Selected) 

    } 
Verwandte Themen