Barra tabbar personalizada de iOS

Acabo de comenzar con el desarrollo de iOS y estoy jugando con atm.

Estoy tratando de transformar los botones tabulares predeterminados en algo más personalizado.

Después de mirar alrededor descubrí que puedes crear estados personalizados para cada botón, así que lo hice:

UIImage *selectedImage0 = [UIImage imageNamed:@"first.png"]; UIImage *unselectedImage0 = [UIImage imageNamed:@"second.png"]; UITabBar *tabBar = self.tabBarController.tabBar; UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; [item0 setFinishedSelectedImage:selectedImage0 withFinishedUnselectedImage:unselectedImage0]; 

Sin embargo, no puedo deshacerme del botón predeterminado, cambia la imagen, pero no cambia todo el botón.

¿Hay algo más que deba hacer?

 UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; self.tabBarController = [[UITabBarController alloc] init]; self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil]; self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible]; UIImage *selectedImage0 = [UIImage imageNamed:@"first.png"]; UIImage *unselectedImage0 = [UIImage imageNamed:@"second.png"]; UITabBar *tabBar = self.tabBarController.tabBar; UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; [item0 setFinishedSelectedImage:selectedImage0 withFinishedUnselectedImage:unselectedImage0]; 

Compruebe los siguientes enlaces (la mayoría de la personalización del controlador de barra de tabs)

  1. Implementar una barra de tabs personalizada
  2. Tabbar con colores personalizados
  3. Diferencia personalizada de Tabbar fondo
  4. Cómo guardar el orden de tabs personalizado del usuario ]
  5. RX -Tabbar controller

Aquí he creado una barra de tabs personalizada y las imágenes que tomé están en un archivo constante. Aquí puede reemplazar la imagen con “foo.png” según su conveniencia. Aquí el serivceImg, contactImg, etc. son UIImageView que se declara en el archivo .h. Además, no olvide agregar UITabBarControllerDelegate como delegado en su archivo .h.

 -(void)setUpTabBar { tabBar = [[UITabBarController alloc] init]; Services *firstViewController = [[Services alloc]init]; firstViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1]; UINavigationController *firstNavController = [[UINavigationController alloc]initWithRootViewController:firstViewController]; ContactUs *secondViewController = [[ContactUs alloc]init]; secondViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:2]; UINavigationController *secondNavController = [[UINavigationController alloc]initWithRootViewController:secondViewController]; Bookings *thirdViewController = [[Bookings alloc]init]; thirdViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:3]; UINavigationController *thirdNavController = [[UINavigationController alloc]initWithRootViewController:thirdViewController]; Reward *fourthViewController = [[Reward alloc]init]; fourthViewController.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemRecents tag:4]; UINavigationController *fourthNavController = [[UINavigationController alloc]initWithRootViewController:fourthViewController]; tabBar.viewControllers = [[NSArray alloc] initWithObjects:firstNavController, secondNavController, thirdNavController, fourthNavController, nil]; tabBar.delegate=self; tabBar.selectedIndex=0; [firstNavController release]; [firstViewController release]; [secondNavController release]; [secondViewController release]; [thirdNavController release]; [thirdViewController release]; [fourthNavController release]; [fourthViewController release]; serivceImg=[[UIImageView alloc]initWithFrame:CGRectMake(0, 432, 80, 49)]; serivceImg.image=[UIImage imageNamed:serviceHover]; contactImg=[[UIImageView alloc]initWithFrame:CGRectMake(81, 432,80, 49)]; contactImg.image=[UIImage imageNamed:tabContact]; bookingImg=[[UIImageView alloc]initWithFrame:CGRectMake(162, 432,80, 49)]; bookingImg.image=[UIImage imageNamed:tabBooking]; rewardImg=[[UIImageView alloc]initWithFrame:CGRectMake(243, 432, 80, 49)]; rewardImg.image=[UIImage imageNamed:tabReward]; [tabBar.view addSubview:serivceImg]; [tabBar.view addSubview:contactImg]; [tabBar.view addSubview:bookingImg]; [tabBar.view addSubview:rewardImg]; [[[UIApplication sharedApplication]keyWindow]addSubview:tabBar.view]; [serivceImg release]; [contactImg release]; [bookingImg release]; [rewardImg release]; } - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController1{ if (viewController1 == [tabBar.viewControllers objectAtIndex:0]) { serivceImg.image = [UIImage imageNamed:kserviceHover]; contactImg.image=[UIImage imageNamed:ktabContact]; bookingImg.image=[UIImage imageNamed:ktabBooking]; rewardImg.image=[UIImage imageNamed:ktabReward]; } else if (viewController1 == [tabBar.viewControllers objectAtIndex:1]) { serivceImg.image = [UIImage imageNamed:ktabService]; contactImg.image=[UIImage imageNamed:kcontactHover]; bookingImg.image=[UIImage imageNamed:ktabBooking]; rewardImg.image=[UIImage imageNamed:ktabReward]; } else if (viewController1 == [tabBar.viewControllers objectAtIndex:2]) { serivceImg.image = [UIImage imageNamed:ktabService]; contactImg.image=[UIImage imageNamed:ktabContact]; bookingImg.image=[UIImage imageNamed:kbookingHover]; rewardImg.image=[UIImage imageNamed:ktabReward]; } else if (viewController1 == [tabBar.viewControllers objectAtIndex:3]) { serivceImg.image = [UIImage imageNamed:ktabService]; contactImg.image=[UIImage imageNamed:ktabContact]; bookingImg.image=[UIImage imageNamed:ktabBooking]; rewardImg.image=[UIImage imageNamed:krewardHover]; } } 

Prueba esto. Esto podría ayudarte.