Egne farver på navigation bar items

Man kan skift farve på en navigation bar (UINavigationBar) ved at ændre dens tintColor property, men det skifter farve på både navigation bar’en og alle dens items. De enkelte items (UIBarButtonItem) har ikke nogen tintColor eller backgroundColor property, så man kan som udgangspunkt ikke ændre farven på et navigation bar item separat fra farven på navigation bar’en.

Men selvfølgelig kan det lade sig gøre. Man gør sådan her:

Først skal der laves en grafik med den ønskede tekst eller ikon. Det er heldigvis nemt, hvis man bruger teehan+lax’ Photoshop template, som indeholder alle mulige iPhone GUI-elementer fint opdelt i lag med layer effects, så man nemt kan ændre på fx farverne og stadig beholde de rigtige skygger osv.

Når man har de nødvendige grafikker, indsætter man dem i navigation bar’en i koden sådan her:

– (void)viewDidLoad
{
    [super viewDidLoad];

    // back item
    UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [backBtn setImage:[UIImage imageNamed:@"icon_backregistrations.png"] forState:UIControlStateNormal];
    [backBtn addTarget:self action:@selector(goBack:) forControlEvents:UIControlEventTouchUpInside];
    backBtn.frame = CGRectMake( 0, 0, 100, 32 );
    UIBarButtonItem *backItem = [[[UIBarButtonItem alloc] initWithCustomView:backBtn] autorelease];
    
    // set custom back button
    self.navigationItem.leftBarButtonItem = backItem;
    
    // delete item
    UIButton *trashBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [trashBtn setImage:[UIImage imageNamed:@"icon_trash_green.png"] forState:UIControlStateNormal];
    [trashBtn addTarget:self action:@selector(deleteItem:) forControlEvents:UIControlEventTouchUpInside];
    trashBtn.frame = CGRectMake( 0, 0, 34, 32 );
    UIBarButtonItem *trashItem = [[[UIBarButtonItem alloc] initWithCustomView:trashBtn] autorelease];
    
    // add custom right item
    self.navigationItem.rightBarButtonItem = trashItem;
}

Og vupti, så har man navigation bar items i sine egne, fine farver og en navigation bar i en anden farve.

Skriv en kommentar

 
Af Jens Willy Johannsen
jens@greenerpastures.dk
+45 70 26 00 69