选择和取消选择选项卡时如何指定图像的色调?
我已经尝试过了,但它不起作用:
[[UITabBar appearance] setTintColor:[UIColor redColor]];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];
这会使选定的图像变为红色(不是绿色),而未选定的图像变为灰色(不是红色)。
选择和取消选择选项卡时如何指定图像的色调?
我已经尝试过了,但它不起作用:
[[UITabBar appearance] setTintColor:[UIColor redColor]];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];
这会使选定的图像变为红色(不是绿色),而未选定的图像变为灰色(不是红色)。
您可以为选定和未选定的标签栏按钮设置色调颜色,如下所示:
[[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor:[UIColor redColor]];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor greenColor]];
第一行通过设置 UIView 包含在选项卡栏中时的 tintColor 来设置未选择的颜色(在此示例中为红色)。请注意,这仅设置未选择图像的色调颜色 - 它不会更改其下方文本的颜色。
第二行将选项卡栏的选定图像色调设置为绿色。
您是否使用图像的模板版本?
不要使用 设置图像,而是使用[UIImage imageNamed: @"MyImage"]
设置它们[[UIImage imageNamed: @"MyImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysTemplate]
。
此设置以及您的代码应该可以解决此问题。
您必须使用 iOS 7 中引入的新图像渲染模式(UIImageRenderingModeAlwaysOriginal
并且UIImageRenderingModeAlwaysTemplate
)请参阅我对类似 问题的回答:
希望这可以帮助
如果您没有很多视图控制器。这是我的方法。
在您的委托方法中,只需放置您的 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 上工作。