8

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

替代文字

4

9 回答 9

11

刚刚找到我的解决方案。基本上,我将 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
于 2010-09-21T16:59:03.923 回答
6

在 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"]];

我希望这会帮助你。

于 2013-02-28T10:49:44.717 回答
2

这在 SDK 中不受官方支持。您可能能够在运行时探测和调整选项卡的视图,但您可能会被 Apple 拒绝。

编辑:为了完整起见,我应该提到你的另一个选择是推出你自己的 UITabBar。

于 2010-08-11T19:12:38.520 回答
2

只需在调用 UITabBarController-delegate-methods 时添加一些自定义视图(使用 insertSubview:atIndex:)。

例子:

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

你可以尝试改变someIndex自己,直到你得到你想要的结果。

于 2010-08-11T20:13:33.847 回答
1

对于 iOS5 及更高版本,您可以这样做:

rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];
于 2012-07-05T19:48:32.333 回答
1

我相信你现在可以这样做:

[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];
于 2012-07-23T09:51:57.563 回答
1

使用情节提要时,您可以简单地选择 TabBarController 的 TabBar,然后在 Identity Inspector 中更改 Image Tint。这也应该适用于 XIB。

在此处查找描述待办事项的图像

于 2013-03-13T00:14:13.047 回答
0

在 AppDelegate.m

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

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

return YES;

}

这会给你一种红色,用你想要的白色、蓝色等改变颜色。

于 2012-11-19T14:21:09.037 回答
0

在我的 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"]];
    }
}
于 2013-05-08T00:03:40.530 回答