选项卡栏控制器中TabBar项目的不同颜色

时间:2017-03-24 14:24:40

标签: ios swift uitabbar

我有标签栏控制器,标签很少。

  • 所有标签页的图像和文字都应具有相同的非选定颜色。

  • 所有标签页应具有不同的图像选择颜色 文本。

我已准备好使用所选和未选择项目所需的颜色创建图像。我知道如何为AppDelegate的所有标签更改此颜色

    UITabBar.appearance().tintColor = UIColorFromRGB(rgbValue: MY_COLOR, aplhaValue: 1.0)
    UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColorFromRGB(rgbValue: MY_COLOR, aplhaValue: 1.0)], for: UIControlState.selected)
    UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.white], for: UIControlState.normal)

但我想为不同的物品制作不同的颜色。

1 个答案:

答案 0 :(得分:2)

在您的Storyboard中选择您的TabBarController,并在此示例中为其指定一个自定义类:TabBarController

enter image description here enter image description here

然后创建自定义TabBarController文件:

//  Copyright © 2017 Erick Vavretchek. All rights reserved.

import UIKit

class TabBarController: UITabBarController {

  enum tabBarMenu: Int {
    case home
    case list
    case settings
  }

  // MARK: UITabBarController

  override func viewDidLoad() {

    super.viewDidLoad()

    guard let tabBarMenuItem = tabBarMenu(rawValue: 0) else { return }
    setTintColor(forMenuItem: tabBarMenuItem)
  }

  override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {

    guard
      let menuItemSelected = tabBar.items?.index(of: item),
      let tabBarMenuItem = tabBarMenu(rawValue: menuItemSelected)
      else { return }

    setTintColor(forMenuItem: tabBarMenuItem)
  }

  // MARK: Private

  private func setTintColor(forMenuItem tabBarMenuItem: tabBarMenu) {
    switch tabBarMenuItem {
    case .home:
      viewControllers?[tabBarMenuItem.rawValue].tabBarController?.tabBar.tintColor = UIColor.green
    case .list:
      viewControllers?[tabBarMenuItem.rawValue].tabBarController?.tabBar.tintColor = UIColor.red
    case .settings:
      viewControllers?[tabBarMenuItem.rawValue].tabBarController?.tabBar.tintColor = UIColor.red
    }
  }
}

在Assets.xcassets文件夹中选择用于TabBarItem的每个图像并将其设置为Render As: Template Image也很重要。这就是你如何简单地将tintColor改为你喜欢的任何东西:

enter image description here