当前位置: 首页 > 知识库问答 >
问题:

如何在swift中更改选项卡栏未选中图标的颜色?

东方和煦
2023-03-14

如何更改选项卡栏未选中图标和文本的颜色?我找到了这个答案(如何更改选项卡栏上的非活动图标/文本颜色?),但不能为斯威夫特实施。

共有3个答案

赖翰
2023-03-14

下面设置了所有UITabBarItem的默认值,您可以将其添加到您的AppDelegate。它会改变你的文本颜色。

UITabBarItem.appearance().setTitleTextAttributes({NSForegroundColorAttributeName: UIColor.blackColor()}, forState:.Selected)
UITabBarItem.appearance().setTitleTextAttributes({NSForegroundColorAttributeName: UIColor.whiteColor()}, forState:.Normal)

对于更改图标的颜色,您可以将图像设置为给定的状态,其中您的图像已经具有良好的颜色。

self.tabBarItem.selectedImage = [[UIImage imageNamed:@"selectedImage"]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

self.tabBarItem.image = [[UIImage imageNamed:@"notSelectedImage"] 
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

或者你可以这样做:

添加一个扩展到UIImage类(从这个答案):

extension UIImage {
func imageWithColor(color1: UIColor) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)

    let context = UIGraphicsGetCurrentContext() as CGContextRef
    CGContextTranslateCTM(context, 0, self.size.height)
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextSetBlendMode(context, kCGBlendModeNormal)

    let rect = CGRectMake(0, 0, self.size.width, self.size.height) as CGRect
    CGContextClipToMask(context, rect, self.CGImage)
    color1.setFill()
    CGContextFillRect(context, rect)

    let newImage = UIGraphicsGetImageFromCurrentImageContext() as UIImage
    UIGraphicsEndImageContext()

    return newImage
}
}

在您的视图中加载

for item in self.tabBar.items as [UITabBarItem] {
    if let image = item.image {
        item.image = image.imageWithColor(UIColor.blackColor()).imageWithRenderingMode(.AlwaysOriginal)
    }
}
帅雅逸
2023-03-14

在iOS11中,您可以直接在故事板中的UIToolBar设置属性:

UnselectedItemTintColor|颜色|[所需颜色]

Xcode打印

臧令
2023-03-14

iOS 10

class TabBarVC: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // make unselected icons white
        self.tabBar.unselectedItemTintColor = UIColor.white
    }
}
 类似资料:
  • 我正在使用带有的,我想知道如何最有效地更改TabLayout中选定选项卡的图标的颜色。 谷歌的Youtube应用程序是如何实现这一点的完美参考。在主页上,有四个深灰色图标。选择特定选项卡后,选项卡图标变为白色。 没有任何第三方库,我怎样才能达到同样的效果? 一个可能的解决方案显然是用选择器。但是在这种情况下,我必须找到图标的白色和灰色版本,然后在选项卡被选中或取消选中时切换图标。我想知道是否有一个

  • 我已经在我的应用程序上集成了底部栏导航栏。但是当我刷的时候,Tab的颜色不会改变。很奇怪因为我有选择器文件。有什么解决这个问题的主意吗?

  • 我正在尝试在选择选项中更改选择的颜色。我试图这样做: 但它不起作用。这只适用于简单文本,不适用于选项。有什么方法可以改变选择的颜色吗?我不需要更改所选选项的背景。我需要改变选择的颜色。

  • 问题内容: 我不需要自定义图标,而是要使用自定义星标(我已选中和未选中图标)。可以通过财产来完成吗?还是我必须声明一个自Checkbox派生的自定义小部件? 问题答案: 混合种类: 在您的布局文件中设置它: @ drawable / checkbox如下所示:

  • 问题内容: 我有一个选择框。通过已引用的CSS文件,已使用不同的颜色来设置选项的样式。我希望能够选择一个选项,然后将关闭的选择框的文本颜色更改为所选选项的颜色。 因此,如果我选择“香蕉”,则文本应从黄色变为红色。 我努力了: 但这仅在我在html文档内的选项标签中定义样式时才有效。 我也尝试过JavaScript: 但这总是返回颜色:白色。getStyle函数在我使用过的其他任何地方都可以使用,因

  • 问题内容: 我正在使用以下代码, 用于更改JFrame中的工具栏颜色。但这没有用。 是否可以在JFrame中更改标题栏的颜色? 问题答案: 这是不可能的。顶级JFrame由底层OS的外观控制。 您可以更改的颜色。