Personnaliser la UITabBar

Pour définir les images de chaque UITabBarItem, dans leur état sélectionné et déselectionné :

UITabBarItem *item0 = [self.tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [self.tabBar.items objectAtIndex:1];
...

item0.title = @"Disciplinas";
item1.title = @"Notas";
...

[item0 setFinishedSelectedImage:[UIImage imageNamed:@"disciplinas-active"] withFinishedUnselectedImage:[UIImage imageNamed:@"disciplinas-inactive"]];
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"notas-active"] withFinishedUnselectedImage:[UIImage imageNamed:@"notas-inactive"]];
...

Pour changer l’apparence du texte apparaissant sous l’icône, par exemple sa police et sa couleur, on peut utiliser UIAppearance. Attention, cela affectera toutes les UITabBar de l’application :

[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           [UIColor colorWithRed:247./255. green:228./255. blue:211./255. alpha:1.], UITextAttributeTextColor,
                                                           [UIFont fontWithName:@"MyFontName" size:11.0], UITextAttributeFont, nil]
                                                 forState:UIControlStateNormal];

[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           [UIColor colorWithRed:67./255. green:33./255. blue:5./255. alpha:1.], UITextAttributeTextColor,
                                                           [UIFont fontWithName:@"MyFontName" size:11.0], UITextAttributeFont, nil]
                                                 forState:UIControlStateSelected];

Voilà le résultat obtenu :

 

 

Attention, pour l’état sélectionné il faut bien utiliser UIControlStateSelected. Si vous utilisez UIControlStateHighlighted, l’erreur suivante apparaitra dans la console :

button text attributes only respected for UIControlStateNormal, UIControlStateHighlighted and UIControlStateDisabled. state = 1 is interpreted as UIControlStateHighlighted.

On note qu’un effet de brillance est toujours présent sur le UITabBarItem sélectionné.

Afin de personnaliser cet « indicateur de sélection », on peut utiliser la méthode

[[UITabBar appearance] setSelectionIndicatorImage:indicatorImage];

// En revanche si l'on souhaite se passer de cet indicateur, il n'est pas
// possible d'utiliser nil avec la précédente méthode

[[UITabBar appearance] setSelectionIndicatorImage:nil]; // ne fonctionne pas !

// En revanche, on peut utiliser une image transparente, cela fonctionne !

[[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"transparent.png"]];

Ci-dessous le résultat sans l’effet de surbrillance sur le UITabBarItem sélectionné :

  • Trackback ( 0 )
  • Commentaires ( 0 )
  1. Aucun commentaire pour l'instant

  1. Aucun trackback pour l'instant