setTintColor: на UINavigationBar появление не влияет - PullRequest
2 голосов
/ 25 января 2012

Это мой код для изменения цвета панели вкладок и панели навигации моего приложения:

UIColor* color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blue.jpeg"]];

//set colors
[[UINavigationBar appearance] setTintColor:color];
[[UITabBar appearance] setTintColor:color];

Но меняется только оттенок панели вкладок;панель навигации остается черной.Почему setTintColor: работает для панели вкладок, но не для панели навигации?

Редактировать: Интересно, что при тестировании на реальном устройстве (iPhone 4 под управлением iOS 5.0.1) ни панель вкладок ни не изменен цвет панели навигации;оба остаются черными.На симуляторе хотя бы панель вкладок меняется ... какое-нибудь объяснение этому поведению?Спасибо!

Редактировать 2: Вот часть моего кода в applicationDidFinishLaunching:

UIColor* color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blue.jpeg"]];

//create navigation controllers
firstNavigationController = [[UINavigationController alloc] 
    initWithRootViewController:viewController1];
[[firstNavigationController navigationBar] setTintColor:color];
//[[firstNavigationController navigationBar] setBarStyle:UIBarStyleBlack];

secondNavigationController = [[UINavigationController alloc] 
    initWithRootViewController:viewController2];
[[secondNavigationController navigationBar] setTintColor:color];
//[[secondNavigationController navigationBar] setBarStyle:UIBarStyleBlack];

thirdNavigationController = [[UINavigationController alloc] 
    initWithRootViewController:viewController3];
[[thirdNavigationController navigationBar] setTintColor:color];
//[[thirdNavigationController navigationBar] setBarStyle:UIBarStyleBlack];

fourthNavigationController = [[UINavigationController alloc] 
    initWithRootViewController:viewController4];
[[fourthNavigationController navigationBar] setTintColor:color];
//[[fourthNavigationController navigationBar] setBarStyle:UIBarStyleBlack];

//create tab bar controller
self.tabBarController = [[UITabBarController new] autorelease];
self.tabBarController.delegate = self;

//set controllers
self.tabBarController.viewControllers = [NSArray 
    arrayWithObjects:firstNavigationController, secondNavigationController, 
    thirdNavigationController, fourthNavigationController, nil];

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Найдите RGB из вашего "blue.jpeg" и установите для него цвет оттенка ...

self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:213.0/255.0 green:166.0/255.0 blue:39.0/255.0 alpha:1];

Или, если вы устанавливаете изображение в качестве цвета фона, вы можете использовать следующий код ...

self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"blue.jpeg"].CGImage;
0 голосов
/ 28 июня 2012

Из множества других исследований я узнал, что установка свойства tintColor для цвета, сделанного из изображения, считается «взломом».Поддерживаются только цвета RGB, и ожидается, что они будут работать правильно для этого свойства.Так что у вас есть это.Из-за NDA я не могу дать больше подробностей, но как только iOS 6 станет публичной, я попытаюсь обновить это.

...