¿Hay una manera de utilizar una imagen seleccionada a medida para UITabBarItem?
-
27-09-2019 - |
Solución
Sólo encontró mi solución. Básicamente, una subclase UITabItem y puse esto en el controlador de navegación:
-(void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
CustomTabBarItem *tabItem = [[CustomTabBarItem alloc] initWithTitle:@"Events" image:[UIImage imageNamed:@"tabIcon.png"] tag:0];
tabItem.customHighlightedImage=[UIImage imageNamed:@"tabIconSelected.png"];
self.tabBarItem = tabItem;
[tabItem release];
tabItem=nil;
}
Esto es lo que las miradas de clase CustomTabBarItem como:
@interface CustomTabBarItem : UITabBarItem
{
UIImage *customHighlightedImage;
}
@property (nonatomic, retain) UIImage *customHighlightedImage;
@end
aplicación:
#import "CustomTabBarItem.h
@implementation CustomTabBarItem
@synthesize customHighlightedImage;
- (void)dealloc {
[customHighlightedImage release];
customHighlightedImage=nil;
[super dealloc];
}
-(UIImage *)selectedImage {
return self.customHighlightedImage;
}
@end
Otros consejos
En iOS 6 Tengo cambiar la imagen seleccionada como tabbatitem -
en TabBar controlador método delegado
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if([tabBarController selectedIndex] == 0)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
}
}
a través de este se puede cambiar su imagen.
o puede utilizar directamente en los controladores de vista init (o viewWillAppear) método, como
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
Espero que esto te ayudaré.
Sólo tiene que añadir algunas vistas personalizadas (utilizando insertSubview:. AtIndex :) cuando se llama a los métodos-delegado UITabBarController
Ejemplo:
– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[tabBarController.tabBar insertSubview:someView atIndex:someIndex];
}
Puede intentar cambiar someIndex
a sí mismo hasta que usted tiene el resultado que desea.
Esto no es compatible oficialmente en el SDK. Usted puede ser capaz de investigar y ajustar puntos de vista de la pestaña en tiempo de ejecución, pero corre el riesgo de un rechazo por parte de Apple.
Editar:. Para completar, debería mencionar que la otra opción es a rodar su propia UITabBar
Para IOS5 y hacia arriba, sólo puede hacer esto:
rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];
Creo que ahora se puede hacer esto con:
[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];
Al utilizar guiones gráficos sólo tiene que seleccionar su TabBar de tabBarController y luego cambiar la imagen Tinte en el inspector de identidad. Esto también debe trabajar con XIBs.
En AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {
[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]];
return YES;
}
Esto le dará un color rojo, cambiar el color con el que desea whitecolor, etc .. bluecolor
En mi viewDidLoad:
de UITabBarController, basado en la respuesta de Rizzu:
for (int i = 0; i < [self.viewControllers count]; i++)
{
UIViewController* viewController = [self.viewControllers objectAtIndex:i];
if(i == 0)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_list_all_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_list_all.png"]];
}
else if(i == 1)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_settings_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_settings.png"]];
}
}