在情节提要中更改选项卡栏项目选定的颜色

Posted

技术标签:

【中文标题】在情节提要中更改选项卡栏项目选定的颜色【英文标题】:Change tab bar item selected color in a storyboard 【发布时间】:2015-01-06 05:54:23 【问题描述】:

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

如何使用 Xcode 6 中的情节提要编辑器完成此操作?

这是我当前的设置,但不能正常工作,蓝色背景有效但粉红色无效:

【问题讨论】:

tab-bar-item-tint-color的可能重复! 查看这个答案,它将帮助您解决问题:***.com/a/58727092/7804300 【参考方案1】:

从 StoryBoard 添加名为“tintColor”的运行时颜色属性。这是有效的(适用于 Xcode 8 及更高版本)。

如果你想要未选择的颜色..你也可以添加unselectedItemTintColor

【讨论】:

当我将此属性添加到 UITabBarItem 而不是 UITabBar 时,它对我有用。 但是如何在情节提要中设置标签栏项目未选择的颜色? 非常适合我的情况 - 我需要我的五个 tabBar 项目在选择时是唯一的颜色。我能够在连接到我的 tabBar 的 UITabBarItemUINavigationController 上设置此运行时属性,它可以完美运行。所有这些都无需编写任何代码,这很棒,因为我正在重用一个 VC 类 3 次。谢谢! 相反 - 这是唯一适用于 ios 10 的方法(属性面板的色调似乎不起作用,并且 uitabbaritem 的运行时属性“tintColor”也不起作用。 *** 1 : Apple 0【参考方案2】:

这个优雅的解决方案非常适用于 SWIFT 3.0SWIFT 4.2SWIFT 5.1

在故事板上:

    选择您的标签栏 为标签栏上选定图标的所需颜色设置一个名为tintColor运行时属性 为标签栏上未选中图标的所需颜色设置一个名为unselectedItemTintColor运行时属性

编辑:使用 Xcode 8/10,适用于 iOS 10/12 及更高版本

【讨论】:

非常感谢。 unselectedItemTintColor 发现非常罕见 'unselectedItemTintColor' 对我来说是完美的解决方案,谢谢。 如果部署目标是 8.0 或 9.0,这会起作用吗?我使用 swift 3.0 和 Xcode 8.0 进行开发 选择 Tab 栏很重要,对我来说确实在 Swift 4 中工作过。 太棒了!仍在使用 xCode 10 :) 不会刷新可视化编辑器,但一旦编译就可以工作:)【参考方案3】:

在 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 值。

【讨论】:

似乎其他方法都不起作用(不再适用。)这行得通! @Jarrod 我在这个问题上玩了将近 1 小时,这个答案应该有更多的选票。谢谢!【参考方案4】:

Xcode8 上,我已经从情节提要中更改了ImageTint,它运行良好。

结果:

【讨论】:

当使用自定义图像时,这对我有用 这应该是公认的答案。它不需要运行时属性,这意味着它适用于启动屏幕!【参考方案5】:

斯威夫特 3 | Xcode 10

如果您想使所有标签栏项目的颜色相同(选中和未选中)...


第 1 步

确保您的图像资源设置为渲染为 = 模板图像。这允许它们继承颜色。


第 2 步

使用情节提要编辑器更改标签栏设置,如下所示:

Tab Bar: Image Tint设置为您希望所选图标继承的颜色。 将 Tab Bar: Bar Tint 设置为您想要的标签栏颜色。 将 View: Tint 设置为您希望在情节提要编辑器中看到的颜色,这不会影响应用运行时的图标颜色。


第 3 步

步骤 1 和 2 将更改所选图标的颜色。如果您仍想更改未选中项的颜色,则需要在代码中进行。我还没有找到通过情节提要编辑器完成此操作的方法。

创建自定义标签栏控制器类...

//  TabBarController.swift

class TabBarController: UITabBarController 

    override func viewDidLoad() 
        super.viewDidLoad()

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

...并将自定义类分配给您的标签栏场景控制器。


如果您知道如何通过情节提要编辑器更改未选择的图标颜色,请告诉我。谢谢!

【讨论】:

self.tabBar.unselectedItemTintColor = UIColor.white self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1) 为我工作【参考方案6】:

最好的方法是在故事板中更改Image Tint

【讨论】:

【参考方案7】:

把这段代码放在你想改变颜色的视图控制器的viewDidLoad中

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

【讨论】:

有没有办法改变所有的标签? 只需将相同颜色的代码放在视图中即可加载所有选项卡 您可以在制作 UITabController 后立即使用此代码,它将设置您在选择时为所有选项卡项提到的颜色。 没有setSelectedImageTintColor这样的方法【参考方案8】:

您还可以通过关键路径设置选定的图像栏色调颜色:

希望对你有帮助!!谢谢

【讨论】:

在 iOS 9 中它不会改变未选中的颜色 这将如何帮助改变 UITabBar 图标的颜色?【参考方案9】:

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)

【讨论】:

【参考方案10】:

您可以通过情节提要更改颜色 UITabBarItem 但如果您想通过代码更改颜色非常简单:

// 使用它来改变所选条的颜色

   [[UITabBar appearance] setTintColor:[UIColor blueColor]];

//这用于更改未选中的栏(iOS 10)

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

// 此行用于更改所有标签栏的颜色

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

【讨论】:

setUnselectedItemTintColor 仅适用于 iOS 10【参考方案11】:

不知何故,我们无法单独使用情节提要更改选项卡栏所选项目的色调颜色,因此我在 ViewDidLoad 中添加了以下代码,希望这会有所帮助。

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

【讨论】:

【参考方案12】:

在您的应用委托 -did_finish_launching_with_options 函数中添加此代码

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

输入所需颜色的RGB

【讨论】:

【参考方案13】:

这是适用于 iOS 10 的 Swift 3 中的解决方案:

首先,您创建自己的标签栏控制器子类并将其添加到情节提要中的标签控制器。在viewDidLoad() 方法中,您可以自定义标签栏。这里需要说明的是tabBartintColor属性代表的是选中项的颜色而不是未选中项的颜色!为了更改未选中项的颜色,我建议循环遍历每个项并使用图像的原始颜色,因此它们不会自动呈现为灰色。

class CustomTabBarVC: UITabBarController

    override func viewDidLoad()
    
        super.viewDidLoad()

        self.tabBar.tintColor = AppColor.normalRed
        self.tabBar.barTintColor = .white
        self.tabBar.isTranslucent = true

        if let items = self.tabBar.items
        
            for item in items
            
                if let image = item.image
                
                    item.image = image.withRenderingMode( .alwaysOriginal )
                
            
        
    

这种方法的唯一缺点是您的商品图像必须已经具有您想要的颜色。

【讨论】:

复杂。 Jarrod 的回答适用于所有图标。【参考方案14】:

情节提要中的图像色调对我有用。

【讨论】:

【参考方案15】:

您可以将UITabBarController 子类化,并在情节提要中用它替换那个。 在您的viewDidLoad 子类实现中调用:

[self.tabBar setTintColor:[UIColor greenColor]];

【讨论】:

获取:'UITabBar' does not have a member named 'setSelectedImageTintColor' 我也在使用 swift,所以我输入:self.tabBar.setSelectedImageTintColor = UIColor.greenColor 不确定这是否正确 @Deekor 是 tintColor 而不是 selectedImageTintColor,顺便说一句 selectedImageTintColor 在 iOS 8 中已弃用。

以上是关于在情节提要中更改选项卡栏项目选定的颜色的主要内容,如果未能解决你的问题,请参考以下文章

UITabBarItem选项卡栏项目单个选定的背景颜色

如何使用情节提要正确地转到嵌入式选项卡栏和导航控制器?

iOS:选择选项卡之前的选项卡栏项目标题

标签栏项目图像不会随着情节提要的使用而改变

添加情节提要参考时,标签栏控制器项目上不显示任何内容

如何以编程方式更改初始标签栏选择