改变iOS选项卡栏项目图片和文字颜色

84
这是我的选项卡栏: enter image description here 下图显示了程序运行时选择了“NEWS”项目: enter image description here 显然,“bar tint color”的效果很好!
但是,“tintColor”仅影响图像,而不影响文本。
此外,当选择某个项目时(如上图中的新闻),该项目颜色变为蓝色!我该如何防止这种情况发生?我希望它保持白色。
为什么在选择项目时文本会变成白色,而在未选择时则不会呢?
基本上,我希望项目颜色和文本颜色始终为白色。
我该如何实现这一点?感谢任何帮助。
是否需要Swift代码来处理每个条目?
编辑: enter image description here

你能为所有图标创建白色和灰色的图片,并在需要时进行更改吗? - Max
当选中图片时图片会变蓝,未被选中的文本是白色。我不知道为什么......这是我的问题。 - Greg Peckory
25个回答

1

Swift 5.3

let vc = UIViewController()
vc.tabBarItem.title = "sample"
vc.tabBarItem.image = UIImage(imageLiteralResourceName: "image.png").withRenderingMode(.alwaysOriginal)
vc.tabBarItem.selectedImage = UIImage(imageLiteralResourceName: "image.png").withRenderingMode(.alwaysOriginal)
        
// for text displayed below the tabBar item
UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.black], for: .selected)

1

Swift 5:

let homeTab = UITabBarItem(title: "Home", image: UIImage(named: "YOUR_IMAGE_NAME_FROM_ASSETS")?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal), tag: 1)

0

子类化您的TabbarViewController,并在ViewDidLoad中放置以下代码:

 [UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor darkGreyColorBT]} forState:UIControlStateNormal];
    [UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor nightyDarkColorBT]} forState:UIControlStateSelected];

    self.tabBar.items[0].image  = [[UIImage imageNamed:@"ic-pack off@3x.png"]  imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBar.items[0].selectedImage  = [[UIImage imageNamed:@"ic-pack@3x.png"]  imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBar.items[1].image = [[UIImage imageNamed:@"ic-sleeptracker off@3x.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBar.items[1].selectedImage  = [[UIImage imageNamed:@"ic-sleeptracker@3x.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBar.items[2].image = [[UIImage imageNamed:@"ic-profile off@3x.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBar.items[2].selectedImage  = [[UIImage imageNamed:@"ic-profile@3x.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

这是我拥有的最简单有效的解决方案。


0
从Xcode 14/iOS 16开始,在您的UITabBarController子类中,您只需设置tabBar的tintColor和unselectedItemTintColor属性即可:
tabBar.tintColor = 'some UI color'
tabBar.unselectedItemTintColor = 'some UI color'

0

只需将新的UITabBarController引用添加到项目中。然后在此控制器中创建UITabBar的引用:

@IBOutlet weak var appTabBar: UITabBar!

在其viewDidLoad()中,只需添加以下内容以更改标题文本颜色:

    appTabBar.tintColor = UIColor.scandidThemeColor()

关于图片

    tabBarItem = UITabBarItem(title: "FirstTab", image: UIImage(named: "firstImage"), selectedImage: UIImage(named: "firstSelectedImage"))

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