2012-01-25 3 views
2

Это мой код, чтобы изменить цвет панели вкладок и навигационной панели моего приложения:setTintColor: на UINavigationBar внешний вид не имеет никакого эффекта

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) ни на панели вкладок , ни на цвет панели навигации не изменяется; оба остаются черными. На симуляторе, по крайней мере, панель вкладок меняет ... любое объяснение этого поведения? Благодаря!

Edit 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]; 
+0

Попробуйте что-нибудь быстро здесь. В частности, ссылайтесь на UINavigationBar и измените его свойство tintColor, вместо того, чтобы идти на глобальную реализацию и посмотреть, работает ли это. – CodaFi

ответ

0

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

+0

Вы узнали больше? – LightningStryk

2

Найти 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; 
Смежные вопросы