objective-c uitabbar ios7

objective c - UITabBar no muestra imágenes de elementos seleccionados en ios 7



objective-c ios7 (20)

Agregue estas líneas de códigos en

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; UITabBar *tabBar = tabBarController.tabBar; UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0]; UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1]; UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2]; UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3]; tabBarItem1.selectedImage = [[UIImage imageNamed:@"selectimg"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem1.image = [[UIImage imageNamed:@"deselectimg"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem1.title = @"xxxx"; tabBarItem2.selectedImage = [[UIImage imageNamed:@"selectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem2.image = [[UIImage imageNamed:@"deselectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem2.title = @"xxxx"; tabBarItem3.selectedImage = [[UIImage imageNamed:@"selectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem3.image = [[UIImage imageNamed:@"deselectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem3.title = @"xxxx"; tabBarItem4.selectedImage = [[UIImage imageNamed:@"selectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem4.image = [[UIImage imageNamed:@"deselectimg"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem4.title = @"xxxx"; return YES; }

esto funciona para mí ... y espero lo mejor ...

Los íconos se muestran bien en ios 6 pero no en ios 7. Estoy configurando el estado seleccionado en el método viewController viewDidLoad. Cuando el usuario selecciona un elemento de la barra de pestañas, la imagen desaparece. Aquí está mi código:

UITabBar *tabBar = self.tabBarController.tabBar; if ([UITabBar instancesRespondToSelector:@selector(setSelectedImageTintColor:)]) { [self.tabBarController.tabBar setSelectedImageTintColor:[UIColor whiteColor]]; } UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; UITabBarItem *item1 = [tabBar.items objectAtIndex:1]; UITabBarItem *item2 = [tabBar.items objectAtIndex:2]; UITabBarItem *item3 = [tabBar.items objectAtIndex:3]; [item0 setTitle:@"Home"]; [item1 setTitle:@"Calendar"]; [item2 setTitle:@"News"]; [item3 setTitle:@"My Events"]; [item0 setFinishedSelectedImage:[UIImage imageNamed:@"homeIconSelected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"home2.png"]]; [item1 setFinishedSelectedImage:[UIImage imageNamed:@"Calendar"] withFinishedUnselectedImage:[UIImage imageNamed:@"CalendarIconSelected"]]; [item2 setFinishedSelectedImage:[UIImage imageNamed:@"NewsIconSelected"] withFinishedUnselectedImage:[UIImage imageNamed:@"News"]]; [item3 setFinishedSelectedImage:[UIImage imageNamed:@"EventsIconSelected"] withFinishedUnselectedImage:[UIImage imageNamed:@"Events"]]; [item1 imageInsets]; [item2 imageInsets]; [item3 imageInsets];


Aquí hay una solución Swift para Swift-Guys :)

class CustomTabBar: UITabBar { required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) let btnNames = ["Title1", "Title2", "Title3", "Title4"] for (item, name) in zip(items!, btnNames) { item.image = UIImage(named: "bar/(name)Btn")?.imageWithRenderingMode(.AlwaysOriginal) item.selectedImage = UIImage(named: "bar/(name)SelectedBtn")?.imageWithRenderingMode(.AlwaysOriginal) item.title = name item.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blackColor()], forState: .Normal) item.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.redColor()], forState: .Selected) } } }

¿Qué está pasando exactamente aquí?

  • Haga una variedad de títulos btn y considere los nombres de los archivos de imágenes para que coincidan
  • Hacer para el bucle sobre los elementos de la barra de pestañas y acaba de crear una matriz de títulos btn
  • Establecer la imagen de barButtonItem y su Imagen seleccionada de la matriz
  • Establecer el texto del título de la matriz
  • Establecer el color del texto del título para los estados. Normal y .Selected

La configuración de la parte de los colores del texto es importante si no desea mantener el color del título del elemento de color gris para. Normal y azul para. Seleccionado, ya que está predeterminado. Esto suele ser real cuando considera imágenes personalizadas para elementos de barra de pestañas.


Basado en la respuesta de 132206, hice este método para AppDelegate, llamado desde la application:didFinishLaunchingWithOptions: con:

[self configureSelectedImages];

Obviamente, requiere una convención de nomenclatura estricta para las imágenes de pestaña, pero también se puede volver a utilizar sin editar. Para indicar lo obvio: nombre las imágenes de la barra de pestañas seleccionadas TabbarXXXSeleccionado, donde XXX es igual al título del elemento de la barra de pestañas.

- (void)configureSelectedImages { UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; UITabBar *tabBar = tabBarController.tabBar; for (UITabBarItem *tabBarItem in [tabBar items]) { NSString *selectedImage = [NSString stringWithFormat:@"Tabbar%@Selected", [tabBarItem title]]; (void)[tabBarItem initWithTitle:[tabBarItem title] image:[tabBarItem image] selectedImage:[UIImage imageNamed:selectedImage]]; } }


Debes escribir a la función:

UIImage* tab_image = [UIImage imageNamed:@"tab_image.png"]; UIImage* tab_image_selected = [UIImage imageNamed:@"tab_image_selected.png"]; tab_image = [tab_image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; tab_image_selected = [tab_image_selected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; self.tabBarItem.image = tab_image; self.tabBarItem.selectedImage = tab_image_selected;

espero que esto ayude


Después de pasar un par de horas tratando de hacer que mi tabbar personalizada funcione para iOS 6 y 7, eso fue lo que funcionó para mí ...

UITabBarController *tabBarController = (UITabBarController *)[[self window] rootViewController]; UITabBar *tabBar = tabBarController.tabBar; UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0]; UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1]; UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2]; UITabBarItem *tabBarItem4 = [tabBar.items objectAtIndex:3]; tabBarItem1.title = @"Home"; tabBarItem2.title = @"Map"; tabBarItem3.title = @"Weather"; tabBarItem4.title = @"Info"; if ([[[UIDevice currentDevice] systemVersion] floatValue] < 7) { [tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"cyexplore_home_white.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"cyexplore_home_black.png"]]; [tabBarItem2 setFinishedSelectedImage:[UIImage imageNamed:@"cyexplore_cloud_white.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"cyexplore_cloud_black.png"]]; [tabBarItem3 setFinishedSelectedImage:[UIImage imageNamed:@"cyexplore_map_white.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"cyexplore_map_black.png"]]; [tabBarItem4 setFinishedSelectedImage:[UIImage imageNamed:@"cyexplore_info_white.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"cyexplore_info_black.png"]]; } else { tabBarItem1.selectedImage = [[UIImage imageNamed:@"cyexplore_home_white"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem1.image = [[UIImage imageNamed:@"cyexplore_home_black"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem2.selectedImage = [[UIImage imageNamed:@"cyexplore_cloud_white"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem2.image = [[UIImage imageNamed:@"cyexplore_cloud_black"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem3.selectedImage = [[UIImage imageNamed:@"cyexplore_map_white"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem3.image = [[UIImage imageNamed:@"cyexplore_map_black"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem4.selectedImage = [[UIImage imageNamed:@"cyexplore_info_white"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; tabBarItem4.image = [[UIImage imageNamed:@"cyexplore_info_black"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; } UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar.png"]; [[UITabBar appearance] setBackgroundImage:tabBarBackground]; [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"tabbar_selected.png"]]; [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor blackColor], UITextAttributeTextColor, nil] forState:UIControlStateNormal]; [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor, nil] forState:UIControlStateSelected];


Después de probar todas las otras respuestas y luchar mientras fallaban, encontré la respuesta. Las otras respuestas,, no parecen funcionar en la versión rápida actual. En Swift 2.3, esto funciona para mí. Para aquellos que todavía tienen problemas, intente esto:

tabBarItem.image = UIImage(named: "image_name") searchVC.tabBarItem.selectedImage = UIImage(named: "image_name_when_selected")?.imageWithRenderingMode(.AlwaysOriginal)


En su primer archivo .h del controlador de vista, agregué lo siguiente: @property (débil, no atómica) IBOutlet UITabBarItem * mapViewTabBarItem; @property (débil, no atómica) IBOutlet UITabBarItem * profileViewTabBarItem; @property (débil, no atómica) IBOutlet UITabBarItem * notificationViewTabBarItem;

(tenga en cuenta que mapViewTabBarItem se vinculó mediante Ctrl arrastrando el elemento de la barra de pestañas real a la lista de declaraciones de propiedades en la parte superior del archivo .h)

A continuación, en el mismo archivo .m del controlador de vista en viewDidLoad, agregue lo siguiente:

self.tabBarItem = [self.tabBarController.tabBar.items objectAtIndex:0]; _mapViewTabBarItem.selectedImage = [[UIImage imageNamed:@"@2x-map-icon-selected.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; self.tabBarItem.image = [[UIImage imageNamed:@"@2x-map-icon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; _profileViewTabBarItem = [self.tabBarController.tabBar.items objectAtIndex:1]; _profileViewTabBarItem.selectedImage = [[UIImage imageNamed:@"@2x-profile-icon-selected.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; _profileViewTabBarItem.image = [[UIImage imageNamed:@"@2x-profile-icon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; _notificationViewTabBarItem = [self.tabBarController.tabBar.items objectAtIndex:2]; _notificationViewTabBarItem.selectedImage = [[UIImage imageNamed:@"@2x-notifications-icon-selected.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; _notificationViewTabBarItem.image = [[UIImage imageNamed:@"@2x-notifications-icon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];


Es una solución fácil y limpia de categoría para artículos UITabBar.

Simplemente cree una categoría y use el Atributo de tiempo de ejecución y remítalo de la categoría siguiente.

#import "UITabBarItem+CustomTabBar.h" @implementation UITabBarItem (CustomTabBar) -(void)setValue:(id)value forKey:(NSString *)key { if([key isEqualToString:@"tabtitle"]){ if([value isEqualToString:@"contacts"]) { [self setSelectedImage:[[UIImage imageNamed:@"contacts-selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; } else if([value isEqualToString:@"chat"]) { [self setSelectedImage:[[UIImage imageNamed:@"chat-selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; } else if([value isEqualToString:@"groupchat"]) { [self setSelectedImage:[[UIImage imageNamed:@"groupchat-selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; } else if([value isEqualToString:@"settings"]) { [self setSelectedImage:[[UIImage imageNamed:@"settings-selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; } } [self setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Roboto-Regular" size:12.0f], NSFontAttributeName, [UIColor grayColor], NSForegroundColorAttributeName, nil] forState:UIControlStateNormal]; } @end


Establecer el modo de renderizado de la imagen del elemento de la barra al original puede resolver este problema. Esto se puede hacer utilizando imágenes en .xcassets, por lo que no tiene que escribir muchos códigos.

Primer paso, drapear y soltar las imágenes de elementos de barra en Assets.xcassets.

Segundo paso, elija la imagen del elemento de la barra y cambie [Renderizar como] a [Imagen original]

ps: Por lo general, configuro todos los elementos de la barra de pestañas de TabBarController con el guión gráfico para evitar escribir muchos códigos.


Necesita utilizar tabBarItem initWithTitle:image:selectedImage

[[UITabBarItem alloc] initWithTitle:@"title" image:image selectedImage:imageSel];

junto con cambiar el modo de renderizado UIImage:

imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal

o (para aplicar la máscara de tinte de plantilla de vistas padre, esta opción es predeterminada para los elementos de la barra de pestañas, a menos que opte por no usar el modo de representación anterior)

imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate

Aquí hay un ejemplo de código para un elemento de la barra de pestañas:

UIImage *musicImage = [UIImage imageNamed:@"music.png"]; UIImage *musicImageSel = [UIImage imageNamed:@"musicSel.png"]; musicImage = [musicImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; musicImageSel = [musicImageSel imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; self.musicViewController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Music" image:musicImage selectedImage:musicImageSel];

Espero que esto ayude


Ninguna de las respuestas funcionó para mí: estoy usando MonoTouch, pero si configura la propiedad TintColor de la misma UITabBar , se resaltará la imagen seleccionada con ese color. En obj c puede ser la función setTintColor .


Ninguna respuesta ayudó a solucionar este problema. La razón principal es que mi TabBarController no era mi RootViewController .

La solución que utilicé para Storyboards, y simplemente hice clic en mi UITabButton y agregué un atributo de tiempo de ejecución para selectedImage :

Para cada una de las diferentes vistas asociadas con UITabController .


Preguntas antiguas, pero voy a agregar mi solución aquí también para Xamarin.iOS / C # y para aquellos que quieran configurar las imágenes a través de Interface Builder. Establecí los atributos de Selected Image e Image Selected Image través de Interface Builder. Luego, en el código, InitTabs() un método InitTabs() como este:

public void InitTabs(){ HomeTab.SelectedImage = HomeTab.SelectedImage.ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal); HomeTab.Image = HomeTab.Image.ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal); }

Llame a InitTabs() en ViewDidLoad y ahora aparecerá la imagen adecuada tanto para el estado seleccionado como para el no seleccionado.


Prueba esto:

UITabBarItem *item1 = [[UITabBarItem alloc] initWithTitle:@"" image:[UIImage imageNamed:@"Icon-Small-50.png"] tag:100]; UITabBarItem *item2 = [[UITabBarItem alloc] initWithTitle:@"" image:[UIImage imageNamed:@"image-50.png"] tag:200]; UITabBarItem *item3 = [[UITabBarItem alloc] initWithTitle:@"" image:[UIImage imageNamed:@"Icon-clip-50.png"] tag:300]; UITabBarItem *item4 = [[UITabBarItem alloc] initWithTitle:@"" image:[UIImage imageNamed:@"Icon-color-50.png"] tag:400]; UITabBarItem *item5 = [[UITabBarItem alloc] initWithTitle:@"" image:[UIImage imageNamed:@"Icon-lock-50.png"] tag:500]; [item1 setSelectedImage:[[UIImage imageNamed:@"Icon-Small-50.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [item1 setImageInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; [item2 setSelectedImage:[[UIImage imageNamed:@"image-50.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [item2 setImageInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; [item3 setSelectedImage:[[UIImage imageNamed:@"Icon-clip-50.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [item3 setImageInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; [item4 setSelectedImage:[[UIImage imageNamed:@"Icon-color-50.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [item4 setImageInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; [item5 setSelectedImage:[[UIImage imageNamed:@"Icon-lock-50.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [item5 setImageInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; item1.image = [[UIImage imageNamed:@"Icon-Small-50.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item2.image = [[UIImage imageNamed:@"image-50.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item3.image = [[UIImage imageNamed:@"Icon-clip-50.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item4.image = [[UIImage imageNamed:@"Icon-color-50.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item5.image = [[UIImage imageNamed:@"Icon-lock-50.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];


Tuve el mismo problema con Xcode 6.0.1 (6A317), parece ser un error con el constructor de Interfaz. Sin embargo, he logrado resolverlo dejando la selected image vacía en el constructor de la interfaz y luego en cada viewDidLoad en mis controles de vista que viewDidLoad :

[self.navigationController.tabBarItem setSelectedImage:[UIImage imageNamed:@"imagename-selected"]];

funciona bien ahora, mostrando mi Imagen selectedImage y con máscara de tinte global.


Tuve el mismo problema. Pero trabajar con StoryBoards me impidió cambiar nada en el código. Dejar la imagen vacía en el guión borró este obstáculo para mí. Sin embargo, poner el initWithTitle en el método viewWillAppear del viewcontroller de la pestaña me dio un comportamiento extraño. Primero, obtener la imagen seleccionada requería un clic adicional y las imágenes no aparecían para las pestañas no iniciales.

Para mí, corregir esto fue agregar el siguiente código a AppDelegate en DidFinishLoadingWithOptions (similar a 132206 y Amitabha):

NSArray * vcs = [(UITabBarController*)self.window.rootViewController viewControllers]; UIViewController *tab0 = [[(UINavigationController*)[vcs objectAtIndex:0] viewControllers] objectAtIndex:0]; tab0.title = NSLocalizedString(@"Time", nil); tab0.tabBarItem = [[UITabBarItem alloc] initWithTitle:tab0.title image:[UIImage imageNamed:@"Recents.png"] selectedImage:[UIImage imageNamed:@"RecentsSolid.png"]]; UIViewController *tab1 = [[(UINavigationController*)[vcs objectAtIndex:1] viewControllers] objectAtIndex:0]; tab1.title = NSLocalizedString(@"Expense", nil); tab1.tabBarItem = [[UITabBarItem alloc] initWithTitle:tab1.title image:[UIImage imageNamed:@"Euro.png"] selectedImage:[UIImage imageNamed:@"EuroSolid.png"]];


Tuve un problema similar. Creé la barra de pestañas en el guión gráfico y agregué todas las imágenes a través de los menús del generador de interfaz, ninguna en el código.

Mi solución era realmente simple: en la ventana del inspector de atributos en IB, el campo Elemento de la barra de pestañas para "Imagen seleccionada" debe estar en blanco, y el campo Artículo de barra para "Imagen" debe llenarse con la imagen que desee.

Estoy ejecutando Xcode 6.0.1 y probando con dispositivos iOS 8.0.2.


Use el siguiente código para corregir el problema de la imagen en iOS7:

[[UITabBarItem alloc] initWithTitle:@"title" image:[[UIImage imageNamed:@"YOUR_IMAGE.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"YOUR_SEL_IMAGE.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];


Versión rápida de mostrar imágenes y títulos seleccionados y no seleccionados con UIAppearance API En tu Appdelegate.m copia el código siguiente si tienes una aplicación basada en tabulaciones. Al seguir el código, debes asumir que tienes 4 barras de pestañas.

let tabBarController: UITabBarController = (self.window!.rootViewController as! UITabBarController) let tabBar:UITabBar = tabBarController.tabBar let tabBarItem1:UITabBarItem = tabBar.items![0] let tabBarItem2:UITabBarItem = tabBar.items![1] let tabBarItem3:UITabBarItem = tabBar.items![2] let tabBarItem4:UITabBarItem = tabBar.items![3] tabBarItem1.title = "Home"; tabBarItem2.title = "Maps"; tabBarItem3.title = "My Plan"; tabBarItem4.title = "Settings"; tabBarItem1.selectedImage = UIImage(named: "home_selected.png")! tabBarItem2.selectedImage = UIImage(named: "maps_selected.png")! tabBarItem3.selectedImage = UIImage(named: "myplan_selected.png")! tabBarItem4.selectedImage = UIImage(named: "settings_selected.png")! tabBarItem1.image = UIImage(named: "home.png")! tabBarItem2.image = UIImage(named: "maps.png")! tabBarItem3.image = UIImage(named: "myplan.png")! tabBarItem4.image = UIImage(named: "settings.png")! let tabBarBackground: UIImage = UIImage(named: "tabbar.png")! UITabBar.appearance().backgroundImage = tabBarBackground UITabBar.appearance().selectionIndicatorImage = UIImage(named: "tabbar_selected.png")! UITabBarItem.appearance().setTitleTextAttributes([ NSForegroundColorAttributeName : UIColor.whiteColor() ] , forState: .Normal) let titleHighlightedColor: UIColor = UIColor(red: 153 / 255.0, green: 192 / 255.0, blue: 48 / 255.0, alpha: 1.0) UITabBarItem.appearance().setTitleTextAttributes([ NSForegroundColorAttributeName : titleHighlightedColor ] , forState: .Highlighted)


si está trabajando con guiones gráficos, debe colocar el identificador: "personalizado" en el Controlador de navegación.

entonces :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Assign tab bar item with titles UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; UITabBar *tabBar = tabBarController.tabBar; UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0]; UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1]; UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2]; (void)[tabBarItem1 initWithTitle:nil image:[UIImage imageNamed:@"home.png"] selectedImage:[UIImage imageNamed:@"home_selected.png"]]; (void)[tabBarItem2 initWithTitle:nil image:[UIImage imageNamed:@"home.png"] selectedImage:[UIImage imageNamed:@"home_selected.png"]]; (void)[tabBarItem3 initWithTitle:nil image:[UIImage imageNamed:@"home.png"] selectedImage:[UIImage imageNamed:@"home_selected.png"]]; // Change the tab bar background UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar.png"]; [[UITabBar appearance] setBackgroundImage:tabBarBackground]; return YES; }

Esto funciona para mí