2016-04-14 5 views
-1

Ich änderte die Farbe von uitabbaritem (Text + Bild) mit nicht ausgewähltem Zustand. Ich würde gerne wissen, ob es eine Möglichkeit gibt, diese Farbe zu bekommen? Ich weiß, wir können die ausgewählte Farbe mit [UITabBar Aussehen] .selectedImageTintColor bekommen, aber für die nicht ausgewählte Farbe weiß ich nicht, ob es möglich ist.Erhalten Sie die Farbe von uitabbaritem mit nicht ausgewähltem Status?

Vielen Dank im Voraus,

JC

+1

Wie stellen Sie die Farbe ein? – Dash

Antwort

0

Um die tatsächlichen Farben für UITabBarItem zu ermitteln, müssen Sie den folgenden Code verwenden, auch wenn Sie keine Appearance-API aufrufen. Es fragt die Ansichtshierarchie ab und verwendet die erste und die zweite Schaltfläche, um den tatsächlichen UIColor herauszufinden. Für IOS9 gibt es "UIDeviceRGBColorSpace 0 0.478431 1 1" (# 007aff in hex) für die selectedColor und "UIDeviceWhiteColorSpace 0.572549 1" (# 929292 in hex) für die inactiveColor. Das könnte sich natürlich in zukünftigen Versionen ändern. Um eine konkrete Farbe für ein Objekt mit TintColors, Appearance usw. zu erhalten, verwenden Sie findTabBarLabel() für die tatsächliche UITabBar.

static UILabel* findTabBarLabel(UITabBar* tb,NSString* text) 
{ 
    for (UIView* btn in tb.subviews) { 
    if (![btn isKindOfClass:NSClassFromString(@"UITabBarButton")]) {continue;} 
    for (UIView* sv in btn.subviews) { 
     if (![sv isKindOfClass:NSClassFromString(@"UITabBarButtonLabel")]) {continue;} 
     UILabel* l=(UILabel*)sv; 
     if ([text isEqualToString:l.text]) { 
     return l; 
     } 
    } 
    } 
    return nil; 
} 

static void retrieveTabBarSystemColors() 
{ 
    UITabBarController* tc=[[UITabBarController alloc] init]; 
    UITabBarItem* it1=[[UITabBarItem alloc] initWithTitle:@"foo" image:nil tag:1]; 
    UIViewController* vc1=[[UIViewController alloc] init]; 
    vc1.tabBarItem=it1; 
    UITabBarItem* it2=[[UITabBarItem alloc] initWithTitle:@"bar" image:nil tag:2]; 
    UIViewController* vc2=[[UIViewController alloc] init]; 
    vc2.tabBarItem=it2; 
    [email protected][vc1,vc2]; 
    UITabBar* tb=tc.tabBar; 
    UILabel* label1=findTabBarLabel(tb,@"foo"); 
    NSLog(@"Tab bar item active:%@",label1.textColor.description); 
    UILabel* label2=findTabBarLabel(tb,@"bar"); 
    NSLog(@"Tab bar item inactive color:%@",label2.textColor.description); 
} 
0
UIColor *col = [UITabBar appearance].tintColor; 
UIColor *col2 = [UITabBar appearance].barTintColor; 

Wie diese Weise Sie bartintColor und tintColor der Tab-Leiste bekam können. Hier ist tintColor Ihre nicht ausgewählte Farbe, denke ich. Versuche dies. hoffen, dass diese :)

-Update helfen:

[[UITabBar appearance] setTintColor:[UIColor redColor]]; 
UIColor *clr = [UITabBar appearance].tintColor; 
self.screenTitleLabel.textColor = clr; 

Dies setzt screenTitleLabel Textfarbe auf rot. das bedeutet, dass dies rote Farbe zurückgibt, die ich eingestellt habe. Versuch es.

+0

Leider [UITabBar Aussehen] .tintColor gibt NULL-Wert zurück. – SuisJeux

+0

aktualisierte meine Antwort. Prüfen Sie. – Lion

Verwandte Themen