Есть ли способ использовать выбранное пользователем изображение для UITabBarItem? - PullRequest
8 голосов
/ 11 августа 2010

Мне нравится иметь выбранное пользователем изображение, когда пользователь выбирает элемент на панели вкладок, по умолчанию он выбирается как синий, но вместо этого он хотел бы иметь зеленый цвет. что-то вроде ниже любых мыслей?

альтернативный текст http://www.freeimagehosting.net/uploads/11a2137011.png

Ответы [ 9 ]

11 голосов
/ 21 сентября 2010

Только что нашел мое решение.По сути, я подкласс 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
6 голосов
/ 28 февраля 2013

В iOS 6 я изменил выбранное изображение tabbatitem как -

в методе делегата контроллера табуляции

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

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

, с помощью которого вы можете изменить свое изображение.

ИлиВы можете использовать непосредственно в вашем методе init контроллеров представления (или ViewWillAppear) метод, такой как

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

, я надеюсь, это поможет вам.

2 голосов
/ 12 августа 2010

Просто добавьте несколько пользовательских представлений (используя insertSubview: atIndex :), когда вызываются методы-делегаты UITabBarController.

Пример:

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

Вы можете попробовать изменить someIndex самостоятельно, пока не получите желаемый результат.

2 голосов
/ 11 августа 2010

Это официально не поддерживается в SDK.Возможно, вам удастся проверить и настроить виды вкладок во время выполнения, но вы рискуете получить отказ от Apple.

Редактировать: Для полноты я должен упомянуть, что другим вашим вариантом является откат собственного UITabBar.

1 голос
/ 13 марта 2013

При использовании раскадровок вы можете просто выбрать TabBar вашего TabBarController и затем изменить оттенок изображения в Identity Inspector. Это также должно работать с XIB.

Ищите здесь изображение, описывающее задачи

1 голос
/ 23 июля 2012

Полагаю, теперь вы можете сделать это с:

[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];
1 голос
/ 05 июля 2012

Для iOS5 и выше, вы можете просто сделать это:

rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];
0 голосов
/ 08 мая 2013

В моем UITabBarController 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"]];
    }
}
0 голосов
/ 19 ноября 2012

В AppDelegate.m

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

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

return YES;

}

Это даст вам красный цвет, измените цвет на тот, который вы хотите, белый цвет, синий цвет и т. Д.

...