7 votes

changer la couleur de fond de l'élément de navigation (barre)

Existe-t-il un moyen simple de modifier la couleur d'arrière-plan de l'élément de navigation situé en haut d'une vue ? J'ai une application basée sur la navigation et je veux seulement qu'une vue ait une autre couleur de fond. J'ai créé les vues principalement avec IB. J'ai trouvé la solution suivante (non testée) :

float r=10;
float g=55;
float b=130;
float a=0;

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 120, 30)];
[label setBackgroundColor:[UIColor colorWithRed:r/255.f
                                          green:g/255.f
                                           blue:b/255.f    
                                          alpha:a/255.f];];
[self.navigationController.navigationBar.topItem setTitleView:label];
[label release];

Existe-t-il un moyen plus simple comme

[navigationController.navigationBar setBackgroundColor:blueColor]

Ou puis-je le faire avec IB (mais sans avoir la même couleur dans chaque vue) ?

Merci d'avance !

Cheers

18voto

Joshua Points 5821

Vous pourriez utiliser :

[navigationController.navigationBar setTintColor:[UIColor redColor]; //Red as an example.

Cette option permet de teinter la couleur de la barre de navigation et de tous ses boutons d'une couleur spécifique, dans ce cas le rouge. Cette propriété peut également être définie dans Interface Builder.

Et si vous voulez le personnaliser davantage, vous pouvez définir l'arrière-plan de l'écran. UINavigationBar à une image en la sous-classant. Comme ça

Fichier d'en-tête.

#import <UIKit/UIKit.h>

@interface UINavigationBar (CustomImage)

@end

Fichier d'implémentation.

#import "CustomNavigationBar.h"

@implementation UINavigationBar (CustomImage)

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

{
    if([self isMemberOfClass: [UINavigationBar class]]){
        UIImage *image = [UIImage imageNamed:@"bar.png"];
        CGContextClip(ctx);
        CGContextTranslateCTM(ctx, 0, image.size.height);
        CGContextScaleCTM(ctx, 1.0, -1.0);
        CGContextDrawImage(ctx, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height), image.CGImage);
    }else{
        [super drawLayer:layer inContext:ctx];
    }

}

@end

Ensuite, dans Interface Builder, définissez la classe de vos UINavigationBar à (dans ce cas) CustomNavigationBar sous l'onglet Identité.

3voto

Zaid Khan Points 15

Essayez ceci dans Constructeur d'interface sur votre UINavigationController .

enter image description here

2voto

Desert Rose Points 757

[[UINavigationBar appearance] setTintColor :[UIColor colorWithRed:107.0/256.0 green:145.0/256.0 blue:35.0/256.0 alpha:1.0]] ; Change la couleur de la barre de navigation de toute l'application.

Il suffit de le placer dans la méthode didFinishLauncing de l'Appdelegate.

1voto

Jerry Jones Points 3405

Vous pouvez utiliser navigationController.navigationBar.tintColor ;

1voto

jignesh Points 41

@jerry

La couleur de la teinte n'est pas prise en charge par les coordonnées RVB.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X