Gibt es eine Möglichkeit, eine benutzerdefinierte ausgewählte Bild für UITabBarItem zu benutzen?

StackOverflow https://stackoverflow.com/questions/3461867

  •  27-09-2019
  •  | 
  •  

Frage

Ich mag eine benutzerdefinierte ausgewählte Bild haben, wenn ein Benutzer ein Element auf der Tab-Leiste, die standardmäßig als blau wählt wie möchte aber stattdessen eine grüne Farbe haben. so etwas wie unten irgendwelche Gedanken?

War es hilfreich?

Lösung

gefunden Nur meine Lösung. Grundsätzlich ist subclassed UITabItem und setzen Sie diese in den Navigation-Controller:

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

Hier ist, was die CustomTabBarItem Klasse aussieht:

@interface CustomTabBarItem : UITabBarItem
{
    UIImage  *customHighlightedImage;
}

@property (nonatomic, retain) UIImage *customHighlightedImage;

@end

Umsetzung:

#import "CustomTabBarItem.h

@implementation CustomTabBarItem

@synthesize customHighlightedImage;

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

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

@end

Andere Tipps

In iOS 6 Ich habe das ausgewählte tabbatitem Bild ändern wie -

in Tabbar Controller Delegatmethode

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

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

durch diesen können Sie Ihr Bild ändern.

Sie können auch direkt in Ihrem View-Controller verwenden init (oder ViewWillAppear) -Methode, wie

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

Ich hoffe, das wird dir helfen.

Fügen Sie einfach einige benutzerdefinierte Ansichten (mit insertSubview. AtIndex :) wenn die UITabBarController-Delegat-Methoden aufgerufen werden

Beispiel:

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

Sie können versuchen someIndex sich zu ändern, bis Sie das Ergebnis haben Sie wollen.

Dies ist nicht offiziell im SDK unterstützt. Sie können in der Lage sein, sondieren und die Registerkarte Ansichten zur Laufzeit anpassen, riskieren aber eine Ablehnung von Apple.

Edit:. Der Vollständigkeit halber sollte ich erwähnen, dass Ihre andere Option ist, Ihre eigene UITabBar zu rollen

Für iOS5 und nach oben, können Sie dies nur tun:

rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];

Ich glaube, Sie können dies jetzt tun mit:

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

Wenn Storyboards verwenden, können Sie wählen Sie einfach Ihre TabBarController des TabBar und dann des Farbtons im Identity Inspector ändern. Dies sollte auch die Arbeit mit XIBs.

Schauen Sie hier für ein Bild beschreibt die todos

In AppDelegate.m

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

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

return YES;

}

Dies gibt Ihnen eine rote Farbe, die Farbe mit dem einen Wunsch whiteColor, Bluecolor etc ..

In meinem UITabBarController des viewDidLoad:, basierend auf Rizzu Antwort:

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"]];
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top