Gibt es eine Möglichkeit, eine benutzerdefinierte ausgewählte Bild für UITabBarItem zu benutzen?
-
27-09-2019 - |
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.
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"]];
}
}