2016-04-14 2 views
-1

Я изменил цвет uitabbaritem (текст + изображение) с невыбранным состоянием. Я хотел бы знать, есть ли способ получить этот цвет? Я знаю, что мы можем получить выбранный цвет с [UITabBar appearance] .selectedImageTintColor, но для невыбранного цвета я не знаю, возможно ли это.Получите цвет uitabbaritem с невыбранным состоянием?

Спасибо заранее,

JC

+1

Как вы устанавливаете цвет? – Dash

ответ

0

Чтобы узнать фактические цвета для UITabBarItem, даже не обращаясь к API внешнего вида, прежде чем использовать следующий код. Он запрашивает иерархию представлений и использует первую и вторую кнопку для определения фактического UIColor. Для IOS9 он дает «UIDeviceRGBColorSpace 0 0,478431 1 1» (# 007aff в шестнадцатеричном формате) для выделенного цвета и «UIDeviceWhiteColorSpace 0.572549 1» (# 929292 в шестнадцатеричном формате) для неактивного цвета. Это может измениться, конечно, в будущих версиях. Чтобы получить конкретный цвет для элемента с tintColors, азартность и т. Д., Используйте findTabBarLabel() для фактического 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; 

Как Таким образом, вы можете получили bartintColor и tintColor из панели вкладок. Здесь tintColor - ваш невыбранный цвет, я думаю. Попробуй это. надеюсь, что это поможет :)

Update:

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

Это устанавливает цвет текста screenTitleLabel на красный. это означает, что это возвращает redcolor, который я установил. Попробуй.

+0

К сожалению, [UITabBar appearance] .tintColor возвращает значение NULL. – SuisJeux

+0

обновил мой ответ. Проверь это. – Lion