C'è un modo per utilizzare un'immagine personalizzata selezionata per UITabBarItem?
-
27-09-2019 - |
Soluzione
Appena trovato la mia soluzione. Fondamentalmente, io sottoclasse UITabItem e impostare questa nel controller di navigazione:
-(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;
}
Ecco cosa gli sguardi di classe CustomTabBarItem come:
@interface CustomTabBarItem : UITabBarItem
{
UIImage *customHighlightedImage;
}
@property (nonatomic, retain) UIImage *customHighlightedImage;
@end
applicazione:
#import "CustomTabBarItem.h
@implementation CustomTabBarItem
@synthesize customHighlightedImage;
- (void)dealloc {
[customHighlightedImage release];
customHighlightedImage=nil;
[super dealloc];
}
-(UIImage *)selectedImage {
return self.customHighlightedImage;
}
@end
Altri suggerimenti
In iOS 6 devo cambiare l'immagine selezionata come tabbatitem -
in TabBar regolatore di metodo delegato
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if([tabBarController selectedIndex] == 0)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
}
}
attraverso questo si può cambiare la vostra immagine.
In alternativa è possibile utilizzare direttamente nei vostri controller di vista init (o viewWillAppear) metodo, come
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
Spero che questo ti aiuto.
Basta aggiungere visualizzazioni personalizzate (utilizzando insertSubview:. AtIndex :) quando i UITabBarController-delegato-metodi vengono chiamati
Esempio:
– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[tabBarController.tabBar insertSubview:someView atIndex:someIndex];
}
Si può provare a cambiare someIndex
te stesso fino ad ottenere il risultato desiderato.
Questa non è ufficialmente supportato nel SDK. Si può essere in grado di sondare e regolare le opinioni della scheda in fase di esecuzione, ma si rischia un rifiuto da parte di Apple.
Modifica:. Per completezza, vorrei ricordare che l'altra opzione è quella di rotolare il proprio UITabBar
Per iOS5 e verso l'alto, si può solo fare questo:
rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];
Credo che ora si può fare questo con:
[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];
Quando si utilizza storyboard si può semplicemente selezionare la TabBar di TabBarController e quindi modificare l'immagine Tinta nella finestra di ispezione identità. Questo lavoro dovrebbe anche con XIBs.
In AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {
[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]];
return YES;
}
Questo vi darà un colore rosso, cambiare il colore con quello che si desidera WhiteColor, blueColor etc ..
Nel mio viewDidLoad:
di UITabBarController, in base alla risposta del 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"]];
}
}