自定义选项卡栏图标颜色

我目前正在使用Xcode 5开发一个列表导向的应用程序。 我有一个自定义色彩的标签栏,自定义图像的选项卡图标,自定义色彩的标签栏的图标图像时,它被选中,但我找不到如何自定义图标图像的颜色,当它没有被选中。 现在它只是默认的灰色,你几乎看不到我的绿色标签栏。 我想使标签栏图标的图像和名称为白色。

有人知道如何在Xcode 5中设置标签栏图标的图像色调?

你可以尝试这个色调选定的图标:

// Custom the tab bar [[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]]; 

并且这为着色非活动图标:

 [self.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"item_seleted.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"item_unselected.png"]]; 

您需要将每个选项卡(未选定)图像的渲染模式设置为UIImageRenderingModeAlwaysOriginal 。 因此,在您的应用程序委托中,获取对选项卡栏的引用,然后遍历每个选项卡栏项目,调整图像模式。

有可能是一个更好的方式来获得对标签栏的引用,但我做了以下几点:

 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UITabBarController *tbc = [sb instantiateInitialViewController]; self.window.rootViewController = tbc; UITabBar *tb = tbc.tabBar; 

然后图像调整可以做到如下:

 NSArray *items = tb.items; for (UITabBarItem *tbi in items) { UIImage *image = tbi.image; tbi.selectedImage = image; tbi.image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; } 

您可以纯粹从故事板完成此操作,而无需通过添加“用户定义的运行时属性”来编写任何代码:

  1. 在故事板中select你的UITabViewController
  2. 打开“文档大纲”,并确保您select场景中的“标签栏”视图。
  3. 显示“身份检查员”。 您应该看到“用户定义的运行属性”部分
  4. 添加以下内容:
    • 关键path:tintColor
    • types:颜色
    • 价值:select你想要的颜色。

试试这种方式..它为我工作

在应用程序委托

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ UITabBarController *tabBarController=(UITabBarController*)(self.window.rootViewController); UITabBar *tabBar=tabBarController.tabBar; UITabBarItem *tabBarItem1=[[tabBar items] objectAtIndex:0];//first tab bar [tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"yourImageSelected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"yourImageUnselected.png"]];//image should be 30 by 30 } 

跑,走

如果你在可视化编辑器中有你的标签栏,你可以在这里做。 select标签栏,并在“用户定义的运行属性”添加属性:键path:selectedImageTintColortypes:颜色值:

使用选定和未select的图像设置自定义选项卡栏。 也有tabbarItem图像插入位置在中心

 UITabBar *tabBar = self.tabBarController.tabBar; UITabBarItem *item0 = [tabBar.items objectAtIndex:0]; UITabBarItem *item1 = [tabBar.items objectAtIndex:1]; UITabBarItem *item2 = [tabBar.items objectAtIndex:2]; UITabBarItem *item3 = [tabBar.items objectAtIndex:3]; [item0 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"iconGray.png"] ]; [item1 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue2.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon-2.png"]]; [item2 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue3.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon-3.png"]]; [item3 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue4.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"icon-4.png"]]; item0.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); item1.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); item2.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); item3.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); 

**在第一个视图控制器的viewWillAppear方法。 **

因为setFinishedSelectedImage:withFinishedUnselectedImage已经被弃用了,我用Ram S的答案的一个改变版本,通过replace:

 [item0 setFinishedSelectedImage:[UIImage imageNamed:@"iconBlue.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"iconGray.png"] ]; 

有:

 [item0 setImage:[[UIImage imageNamed:@"iconGray.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [item0 setSelectedImage:[[UIImage imageNamed:@"iconBlue.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; 

请参阅UITabBarItem setFinishedSelectedImage:在iOS7中已弃用以获取更多信息。