13

选择和取消选择选项卡时如何指定图像的色调?

我已经尝试过了,但它不起作用:

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

这会使选定的图像变为红色(不是绿色),而未选定的图像变为灰色(不是红色)。

4

4 回答 4

25

您可以为选定和未选定的标签栏按钮设置色调颜色,如下所示:

[[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor:[UIColor redColor]];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];

第一行通过设置 UIView 包含在选项卡栏中时的 tintColor 来设置未选择的颜色(在此示例中为红色)。请注意,这仅设置未选择图像的色调颜色 - 它不会更改其下方文本的颜色。

第二行将选项卡栏的选定图像色调设置为绿色。

于 2014-03-12T14:29:11.997 回答
0

您是否使用图像的模板版本?

不要使用 设置图像,而是使用[UIImage imageNamed: @"MyImage"]设置它们[[UIImage imageNamed: @"MyImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysTemplate]

此设置以及您的代码应该可以解决此问题。

于 2013-10-07T19:12:15.577 回答
0

您必须使用 iOS 7 中引入的新图像渲染模式(UIImageRenderingModeAlwaysOriginal 并且UIImageRenderingModeAlwaysTemplate)请参阅我对类似 问题的回答:

希望这可以帮助

于 2013-10-27T18:11:34.443 回答
-1

如果您没有很多视图控制器。这是我的方法。

在您的委托方法中,只需放置您的 tabbar bg Image。并设置 UIImageView

在 AppDelegate.h 中创建 UITabbar 实例

@property (nonatomic,retain) UITabBar *tabbar;

@synthesize tabbar;

UITabBarController *tabBarController =
    (UITabBarController *)self.window.rootViewController;
tabbar = [tabBarController tabBar];

[tabbar setBackgroundImage:[UIImage imageNamed:@"tabbarBg.png"]];
 NSArray *tabImageArray  = [NSArray arrayWithObjects:
                                [UIImage imageNamed:@"tab1Hover.png"],
                                [UIImage imageNamed:@"tab2.png"],
                                [UIImage imageNamed:@"tab3.png"],
                                [UIImage imageNamed:@"tab4.png"],
                                [UIImage imageNamed:@"tab5.png"],
                               nil];

    for (int i = 0; i<5; i++) {
        UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(20+i*60+i*3.5, 10, 25, 21)];
        [image setContentMode:UIViewContentModeScaleAspectFit];
        [image setImage:[tabImageArray objectAtIndex:i]];
        [image setTag:10+i];
        [tabbar addSubview:image];
    } 

然后标签栏中的每个 ViewController 添加

-(void)viewWillAppear:(BOOL)animated 

委托方法和在这个方法中。您可以更改图像视图,如下所示。

-(void)viewWillAppear:(BOOL)animated{
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
UITabBarController *tabBarController = (UITabBarController *)appDelegate.window.rootViewController;
 NSArray *tabImageArray  = [NSArray arrayWithObjects:
                               [UIImage imageNamed:@"tab1Hover.png"],
                               [UIImage imageNamed:@"tab2.png"],
                               [UIImage imageNamed:@"tab3.png"],
                               [UIImage imageNamed:@"tab4.png"],
                               [UIImage imageNamed:@"tab5.png"],
                               nil];
for (int i = 0; i<5; i++) {
        UIImageView *image = (UIImageView*)[tabbar viewWithTag:10+i];
        [image setImage:[tabImageArray objectAtIndex:i]];
    }
}

因此,只需在每个视图控制器中定制 tabImageArray 即可。然后你就可以使用它了。

我也在 iOS 7 上工作。

于 2013-10-08T12:43:16.507 回答