Как я могу правильно изменить способ отображения UITabBar с помощью прокси-сервера внешнего вида?

Поскольку я разрабатываю приложение для iOS >= 5.0, я пытаюсь изменить внешний вид основных компонентов пользовательского интерфейса с помощью прокси-серверов внешнего вида.

При работе с компонентом UITabBar я правильно изменил его tintColor на светлый оттенок серого с помощью метода [[UITabBar appearance] setTintColor:]. Но при этом UITabBarItem, включенные в панель, совершенно невозможно увидеть, поскольку они сохраняют старый серый/белый цвет в своей метке заголовка.

Пробовал изменить их внешний вид через прокси [UITabBarItem appearance], но нет возможности сделать их видимыми.

Может ли кто-нибудь предложить мне способ решить эту проблему? Спасибо!


person marzapower    schedule 04.07.2012    source источник


Ответы (1)


Привет, это будет работать для того, что вы хотите сделать

// Customize the UIBarButtonItem
    UIImage *button30 = [[UIImage imageNamed:@"button_textured_30"] 
                         resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
    UIImage *button24 = [[UIImage imageNamed:@"button_textured_24"] 
                         resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];

    [[UITabBarItem appearance] setBackgroundImage:button30 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [[UITabBarItem appearance] setBackgroundImage:button24 forState:UIControlStateNormal barMetrics:UIBarMetricsLandscapePhone];

    [[UITabBarItem appearance] setTitleTextAttributes:
      [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor colorWithRed:82.0/255.0 
                      green:82.0/255.0
                       blue:82.0/255.0
                      alpha:1.0],                     UITextAttributeTextColor,
      [UIColor colorWithRed:242.0 
                      green:237.0 
                       blue:237.0 
                      alpha:1.0],                     UITextAttributeTextShadowColor,
      [NSValue valueWithUIOffset:UIOffsetMake(0,1)],  UITextAttributeTextShadowOffset,
      [UIFont fontWithName:@"Helvetica" size:0.0],    UITextAttributeFont,nil]
                                         forState:UIControlStateNormal];

Удачного кодирования :)

person The iOSDev    schedule 04.07.2012
comment
Я думал, что метод setTitleTextAttributes: доступен только на iOS ›= 6.0. Как выглядят эти два изображения? - person marzapower; 04.07.2012
comment
Они используются для установки в качестве фонового изображения кнопки - person The iOSDev; 04.07.2012
comment
Я думаю, вам следует заменить UIBarButtonItem на UITabBarItem, чтобы это решение заработало. - person marzapower; 04.07.2012
comment
Упс, извините за это, может быть, это прекрасно работает и с UITabBarItem - person The iOSDev; 05.07.2012
comment
Да! Не могли бы вы обновить ответ, чтобы я мог его принять? - person marzapower; 05.07.2012