Swift 2.2 如何改变标签栏控制器的背景颜色

Swift 2.2 How to change background color of tab bar controller

我一直在尝试更改选项卡栏的背景,并且在 ObjC 中阅读了很多 post,其中许多已经很老了。但是我没有找到 Swift,这就是我正在使用的

我终于从代码中弄明白了如何做到这一点,所以标签栏的颜色可以随着每次主题颜色的变化而改变。以下是我使用的参考资料:

  override func viewWillAppear(animated: Bool) {
    // set tab bar background color, including the More tab
    self.tabBarController?.tabBar.backgroundColor = UIColor.blueColor()
  }

我将这段代码放在应用程序启动时出现的第一个选项卡的视图控制器中,这样它就可以 运行 "first." 据我所知,它工作正常,甚至当我有 8 个选项卡并使用“更多...”选项卡时。

并且我将相同的代码绑定到各个选项卡中的按钮,因此我可以从我的代码中的任何位置更改选项卡栏的颜色。

但我承认,作为新手,我不确定这是更改标签栏颜色的最佳位置。如有不妥之处,请指正。

我 post 这段代码在这里,因为它可以节省我几个小时,我希望它可以为其他人节省一些 (swift) 时间。

这是改变 UITabBar 颜色的好方法。如果您想避免在 UITabBarController 中嵌入的每个 viewController 中设置颜色,您还可以创建 UITabBarController 的子 class 并将其设置在那里。这样无论先出现哪个页面,都会设置颜色。

要创建 UITabBarController 的子 class,只需转到文件 > 新建 > 文件 > cocoa 触摸 class...然后像在这张照片

现在在您的故事板中,在您的 tabBarController

上设置自定义 class

最后,在您的文件中您创建了 MyTabBarController(或您所称的任何名称):

class MyTabBarController: UITabBarController {

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    self.tabBar.barTintColor = .blueColor()
}
...

Xcode 9

故事板

可以直接在视图控制器中设置背景颜色(目前在 TabBarViewController 中),为此您需要定义 Key Path。 不要忘记在 嵌套 视图上 删除 背景颜色,否则它会与父视图的背景颜色重叠。

你可以这样改

tabBarController.tabBar.barTintColor = [UIColor blackColor];