Teinte UITabBar dans iOS 7

Comment puis-je spécifier la teinte des images lorsqu'un onglet est sélectionné et non sélectionné?

J'ai essayé ceci mais cela ne marche pas:

[[UITabBar appearance] setTintColor:[UIColor redColor]]; [[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]]; 

Cela rend la teinte de l'image sélectionnée rouge (pas vert) et non sélectionnée teinte grise (pas rouge).

Vous pouvez définir la couleur de la teinte pour les buttons de la barre d'tabs sélectionnés et non sélectionnés comme ceci:

 [[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor:[UIColor redColor]]; [[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]]; 

La première ligne définit la couleur non sélectionnée – rouge dans cet exemple – en définissant le paramètre tintColor de UIView lorsqu'il est contenu dans une barre d'tabs. Notez que ceci ne fait que définir la couleur de la teinte de l'image non sélectionnée – elle ne change pas la couleur du text en dessous.

La deuxième ligne définit la couleur de la teinte de l'image sélectionnée de la barre d'tabs sur vert.

Utilisez-vous le model-version de vos images?

Au lieu de définir vos images avec [UIImage imageNamed: @"MyImage"] , définissez-les avec [[UIImage imageNamed: @"MyImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysTemplate] .

Cette configuration avec votre code devrait résoudre ce problème.

Vous devez utiliser les nouveaux modes de rendu Image introduits dans iOS 7 ( UIImageRenderingModeAlwaysOriginal et UIImageRenderingModeAlwaysTemplate ) voir ma réponse à une question similaire:

J'espère que cela t'aides

si vous n'avez pas beaucoup de viewcontrollers. Voici ma façon de le faire.

Dans votre méthode de délégué, placez simplement votre tabbar bg Image. Et définissez le UIImageView

Créer UITabbar intance dans AppDelegate.h

 @property (nonatomic,retain) UITabBar *tabbar; 

Et

 @synthesize tabbar; UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; tabbar = [tabBarController tabBar]; [tabbar setBackgroundImage:[UIImage imageNamed:@"tabbarBg.png"]]; NSArray *tabImageArray = [NSArray arrayWithObjects: [UIImage imageNamed:@"tab1Hover.png"], [UIImage imageNamed:@"tab2.png"], [UIImage imageNamed:@"tab3.png"], [UIImage imageNamed:@"tab4.png"], [UIImage imageNamed:@"tab5.png"], nil]; for (int i = 0; i<5; i++) { UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(20+i*60+i*3.5, 10, 25, 21)]; [image setContentMode:UIViewContentModeScaleAspectFit]; [image setImage:[tabImageArray objectAtIndex:i]]; [image setTag:10+i]; [tabbar addSubview:image]; } 

Ensuite, chaque ViewController dans la barre d'tabs append

 -(void)viewWillAppear:(BOOL)animated 

déléguer la méthode et dans cette méthode. Vous pouvez modifier les images comme indiqué ci-dessous.

 -(void)viewWillAppear:(BOOL)animated{ AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; UITabBarController *tabBarController = (UITabBarController *)appDelegate.window.rootViewController; NSArray *tabImageArray = [NSArray arrayWithObjects: [UIImage imageNamed:@"tab1Hover.png"], [UIImage imageNamed:@"tab2.png"], [UIImage imageNamed:@"tab3.png"], [UIImage imageNamed:@"tab4.png"], [UIImage imageNamed:@"tab5.png"], nil]; for (int i = 0; i<5; i++) { UIImageView *image = (UIImageView*)[tabbar viewWithTag:10+i]; [image setImage:[tabImageArray objectAtIndex:i]]; } } 

Donc, costumize tabImageArray dans chaque controller View. Ensuite, vous pouvez l'utiliser.

Je travaille aussi sur iOS 7.