Pergunta

Eu gosto de ter uma imagem selecionada personalizada quando um usuário seleciona um item na barra de guias, por padrão, ele seleciona como azul, mas gostaria de ter uma cor verde. algo como abaixo algum pensamento?

alt text

Foi útil?

Solução

Acabei de encontrar minha solução. Basicamente, subclassei o Uitabitem e defina isso no controlador de navegação:

-(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;            
}

Aqui está como se parece a classe CustomTabBariTem:

@interface CustomTabBarItem : UITabBarItem
{
    UIImage  *customHighlightedImage;
}

@property (nonatomic, retain) UIImage *customHighlightedImage;

@end

implementação:

#import "CustomTabBarItem.h

@implementation CustomTabBarItem

@synthesize customHighlightedImage;

- (void)dealloc {
    [customHighlightedImage release];
    customHighlightedImage=nil;
    [super dealloc];
}

-(UIImage *)selectedImage {
    return self.customHighlightedImage;
}

@end

Outras dicas

No iOS 6, mudei a imagem selecionada do tabbatitem como -

no método delegado do controlador Tabbar

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

{
    if([tabBarController selectedIndex] == 0)
    {
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
    }    
}

Com isso, você pode mudar sua imagem.

Ou você pode usar diretamente no método de visualização controladores init (ou viewwillappear), como

        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];

Espero que isso te ajude.

Basta adicionar algumas visualizações personalizadas (usando InsertsubView: ATIndex :) Quando os métodos uitabBarController-Delegate são chamados.

Exemplo:

– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    [tabBarController.tabBar insertSubview:someView atIndex:someIndex];
}

Você pode tentar mudar someIndex você mesmo até ter o resultado que deseja.

Isso não é oficialmente apoiado no SDK. Você pode investigar e ajustar as visualizações da guia em tempo de execução, mas corre o risco de rejeição da Apple.

EDIT: Para completar, devo mencionar que sua outra opção é rolar seu próprio UITABBAR.

Para iOS5 e para cima, você pode fazer isso:

rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];

Eu acredito que você pode agora fazer isso com:

[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];

Ao usar storyboards, você pode simplesmente selecionar o TabBar do seu TabBarController e alterar a tonalidade da imagem no inspetor de identidade. Isso também deve funcionar com o XIBS.

Procure aqui uma imagem descrevendo os Todos

Em appdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {

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

return YES;

}

Isso lhe dará uma cor vermelha, mude a cor com a que você deseja Whitecolor, Bluecolor etc.

No meu uitabbarcontroller viewDidLoad:, com base na resposta 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"]];
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top