Есть ли способ использовать пользовательское выбранное изображение для UITABBARITEM?
-
27-09-2019 - |
Решение
Только что нашел мое решение. По сути, я подклассую UITABITEM и установил это в контроллере навигации:
-(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;
}
Вот что выглядит класс CustomTabbaritem:
@interface CustomTabBarItem : UITabBarItem
{
UIImage *customHighlightedImage;
}
@property (nonatomic, retain) UIImage *customHighlightedImage;
@end
реализация:
#import "CustomTabBarItem.h
@implementation CustomTabBarItem
@synthesize customHighlightedImage;
- (void)dealloc {
[customHighlightedImage release];
customHighlightedImage=nil;
[super dealloc];
}
-(UIImage *)selectedImage {
return self.customHighlightedImage;
}
@end
Другие советы
В iOS 6 я изменил выбранный образ TabbatiTem, как -
В методе делегата контроллера Tabbar Controller
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if([tabBarController selectedIndex] == 0)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
}
}
Через это вы можете изменить свое изображение.
Или вы можете использовать непосредственно в методе своих контроллеров просмотра (или ViewWillAppear), как
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
Я надеюсь, что это поможет вам.
Просто добавьте некоторые пользовательские представления (используя insertsubView: atindex :), когда называются методы делегата по UITabbarController-делегатом.
Пример:
– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[tabBarController.tabBar insertSubview:someView atIndex:someIndex];
}
Вы можете попробовать меняться someIndex
Сам, пока у вас есть результат, который вы хотите.
Это официально не поддерживается в SDK. Вы можете пробять и отрегулировать представления вкладки во время выполнения, но вы рискуете от подавления от Apple.
Редактировать: Для полноты, я должен упомянуть, что ваш другой вариант состоит в том, чтобы свернуть собственную UITABBAR.
Для iOS5 и выше, вы можете просто сделать это:
rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];
Я верю, что вы теперь можете сделать это с:
[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];
При использовании Readboards вы можете просто выбрать TABBAR вашего TabBarController, а затем изменить оттенок изображения в инспекторе идентификатора. Это также должно работать с XIBS.
В AppDelegate.m.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {
[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]];
return YES;
}
Это даст вам красный цвет, измените цвет с тем, который вы желаете WhiteColor, BlueColor etc ..
В моем Уитаббакрентроллере viewDidLoad:
, На основании ответа Рицца:
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"]];
}
}