Есть ли способ использовать пользовательское выбранное изображение для UITABBARITEM?

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

  •  27-09-2019
  •  | 
  •  

Вопрос

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

alt text

Это было полезно?

Решение

Только что нашел мое решение. По сути, я подклассую 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.

Посмотрите здесь для изображения, описывающего TODOS

В 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"]];
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top