Question

Ceci est mon code pour modifier la couleur de la barre d'onglet de mon application et de la barre de navigation:

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

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

Pourtant, seule la couleur de la teinte de la barre d'onglet change; Le bar de navigation reste noir. Pourquoi setTintColor: Travailler pour la barre d'onglet mais pas la barre de navigation?

Edit: Fait assez intéressant, lors des tests sur un réel appareil (un iPhone 4 exécutant iOS 5.0.1) ni la barre d'onglet ni La couleur de la barre de navigation est modifiée; Les deux restent noirs. Sur le simulateur au moins, la barre d'onglet change ... une explication de ce comportement? Merci!

Edit 2: voici une partie de mon code dans 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];
Était-ce utile?

La solution 2

De beaucoup plus de fouilles, j'ai appris que la définition de la propriété Tintcolor sur une couleur fabriquée à partir d'une image est considérée comme un «piratage». Seules les couleurs RVB sont prises en charge et devraient fonctionner correctement pour cette propriété. Alors là, vous l'avez. En raison de la NDA, je ne peux pas donner plus de détails, mais une fois que iOS 6 est public, je vais essayer de mettre à jour cela.

Autres conseils

Trouvez RVB à partir de votre "bleu.jpeg" et définissez-les en couleur de teinte ...

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

Ou lorsque vous définissez une image comme couleur d'arrière-plan, vous pouvez aller avec le code ci-dessous ...

self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"blue.jpeg"].CGImage;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top