我喜欢有一个自定义选择的图像,当用户选择的选项卡栏上的项目,默认情况下,它选择为蓝色等,但希望具有绿色代替。类似下面的任何想法?

“替代文字”

有帮助吗?

解决方案

刚刚发现我的解决方案。基本上,我子类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控制器委托方法

- (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支持。您可以探测并在运行时调整选项卡中的观点,但你可能从苹果公司的拒绝。

编辑:为了完整起见,我要指出,你的另一种选择是推出自己的UITabBar

有关的iOS5及以上,你可以这样做:

rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];

我相信你现在可以做到这一点:

[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];

在使用故事板,你可以简单地选择你的TabBarController的TabBar,然后改变图像的色调的身份检查。这应该也与XIBs工作。

看这里用于描述待办事项

的图像

在AppDelegate.m

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

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

return YES;

}

这会给你一个红色,改变颜色与要whiteColor,blueColor之一等。

在我的UITabBarController的viewDidLoad:,基于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"]];
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top