在故事板中更改选定的选项卡栏项目颜色

201

我想在选中时将标签栏项目更改为粉色,而不是默认的蓝色。

如何使用Xcode 6中的故事板编辑器完成此操作?

以下是我的当前设置,但无效果。蓝色背景有效,但粉色无效:

图片描述


可能是 tab-bar-item-tint-color 的重复问题! - User31
请查看此答案,它将帮助您找到解决方案:https://stackoverflow.com/a/58727092/7804300 - Talha Ahmed
15个回答

443
从Storyboard中添加名为"tintColor"的Runtime颜色属性。这适用于Xcode 8及以上版本。如果您想要未选中的颜色,也可以添加"unselectedItemTintColor"。
在屏幕截图中将tintColor设置为运行时属性:setting tintColor as Runtime Attribute

26
当我将此属性添加到UITabBarItem而不是UITabBar时,它对我起作用了。 - Sourabh86
1
但是在Storyboard中,你如何设置未选中的标签栏项目颜色? - Peter
7
相反地 - 这是在iOS 10上有效的唯一方法(从属性面板中调整色调似乎不起作用,而uitabbaritem的运行时属性“tintColor”也不起作用)。 - luky
6
StackOverflow 1 : Apple 0 - Sharukh Mastan
1
在iOS 10上运行良好。 - Mohammad Zaid Pathan
显示剩余13条评论

201
这个优雅的解决方案在SWIFT 3.0, SWIFT 4.2SWIFT 5.1 上都非常有效:
在Storyboard上:
  1. 选择你的Tab Bar
  2. 为所需颜色的选定图标在选项卡栏上设置一个名为tintColor运行时属性(Runtime Attibute)
  3. 为所需颜色的未选定图标在选项卡栏上设置一个名为unselectedItemTintColor运行时属性(Runtime Attibute)

输入图片说明

编辑:与Xcode 8/10配合使用,适用于iOS 10/12及以上版本。


6
非常感谢。unselectedItemTintColor 很难找到。 - Rushi trivedi
6
"unselectedItemTintColor" 对我来说是完美的解决方案,谢谢。" - fozoglu
如果部署目标是8.0或9.0,这个会起作用吗?我已经使用了Swift 3.0和Xcode 8.0进行开发。 - Mamta
2
重要的是选择选项卡栏,对我来说在Swift 4中确实有效。 - Cons Bulaquena
2
太好了!仍在使用xCode 10 :) 可视化编辑器不会自动刷新,但编译后就可以正常工作 :) - Mihail Minkov
显示剩余2条评论

71

在Swift中,使用xcode 7(及更高版本),您可以将以下内容添加到您的AppDelegate.swift文件中:

UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

这就是完整方法的样子:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    // I added this line
    UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

    return true
}

在上面的例子中,我的物品将是白色。 "/255.0" 是必需的,因为它期望一个从0到1的值。对于白色,我可以只使用1。但对于其他颜色,您可能会使用RGB值。


3
似乎其他方法都不再起作用了,但这个方法有效! - teddy
@Jarrod 我已经玩了将近1个小时,这个答案应该有更多的投票。谢谢! - Lance Samaria

56

我已经在Xcode8中从storyboard更改了ImageTint,并且它运行良好。

输入图像描述

结果:

输入图像描述


1
当使用自定义图像时,这个对我起作用。 - Juanjo
1
这应该是被接受的答案。它不需要运行时属性,这意味着它适用于启动屏幕! - Chris Douglass

21

Swift 3 | Xcode 10

如果你想要让所有选项卡的颜色相同(已选中和未选中)...


步骤1

确保图像资源设置为“渲染为 = 模板图像”。这使它们可以继承颜色。

Xcode Assets


步骤2

使用故事板编辑器按照以下方式更改选项卡栏设置:

  • Tab Bar:Image Tint 设置为您希望选定图标继承的颜色。
  • Tab Bar:Bar Tint 设置为选项卡栏的颜色。
  • 视图:Tint 设置为您希望在故事板编辑器中看到的颜色,这不会影响应用程序运行时图标的颜色。

Xcode Storyboard Editor


步骤3

步骤1和2将更改所选图标的颜色。如果您仍然想更改未选中项目的颜色,则需要通过代码进行更改。我尚未找到通过故事板编辑器执行此操作的方法。

创建一个自定义选项卡栏控制器类...

//  TabBarController.swift

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // make unselected icons white
        self.tabBar.unselectedItemTintColor = UIColor.white
    }
}

...并将自定义类分配给您的选项卡栏场景控制器。

Xcode Storyboard Editor


如果您通过故事板编辑器找出如何更改未选中图标颜色,请告诉我。谢谢!


self.tabBar.unselectedItemTintColor = UIColor.white self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1) 适用于我。 - Wahab Khan Jadon

14

最好的方法是在storyboard中更改图像着色

输入图片描述


10

将这段代码放在您想要更改颜色的视图控制器的viewDidLoad方法中

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

1
有没有办法同时更改所有选项卡的设置? - Deekor
只需将具有相同颜色的代码放置在所有选项卡的“视图加载”中即可。 - Nick
你可以在创建 UITabController 后立即使用此代码,它将为所有选项卡项目设置你指定的颜色。 - Jerrin
没有这样的方法 setSelectedImageTintColor。 - Madhu Avinash

8
您可以通过键路径设置所选图像栏色调颜色:

enter image description here

希望这能对您有所帮助!谢谢


1
在iOS 9中,它不会更改未选中的颜色。 - Saeed Rahmatolahi
那怎样能帮助改变UITabBar图标的颜色呢? - Madhu Avinash

7

XCode 8.2,iOS 10,Swift 3:现在tabBar有一个unselectedItemTintColor属性:

self.tabBar.unselectedItemTintColor = UIColor(red: 0/255.0, green: 200/255.0, blue: 0/255.0, alpha: 1.0)

6
您可以通过Storyboard更改UITabBarItem的颜色,但如果想通过代码更改颜色,非常容易:
//使用以下代码更改所选栏的颜色
   [[UITabBar appearance] setTintColor:[UIColor blueColor]];

// 这是用于更改未被选中的状态栏的代码(iOS 10)

   [[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];

// 这一行用于更改所有选项卡的颜色

   [[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];

setUnselectedItemTintColor 只适用于 iOS 10。 - ondermerol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接