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

时间:2016-03-31 16:47:02

标签: ios swift2 uitabbarcontroller uitabbar

我一直在尝试更改标签栏的背景,并在ObjC中阅读了很多帖子,其中很多都很老了。但我没有找到Swift,这是我正在使用的。

我终于想出了如何从代码中做到这一点,因此可以随每个主题颜色的变化更改标签栏颜色。以下是我使用的参考资料:

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

我将此代码放在视图控制器中,以便在应用启动时显示第一个标签,以便首先运行#34;#34;据我所知,即使我有8个标签并使用更多...标签,它也能正常工作。

我将相同的代码绑定到各个标签中的按钮,因此我可以在代码中的任何位置更改标签栏颜色。

但我承认,作为一个新手,我不确定这是改变标签栏颜色的最佳位置。如果这是错误的地方,请纠正我。

我在这里发布这段代码,因为它可以节省我几个小时,而且我希望它可以节省一些(快速)时间。

3 个答案:

答案 0 :(得分:19)

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

要创建UITabBarController的子类,只需转到文件>新>档案> cocoa touch class ...然后像在这张照片中一样设置你的文件

Add File

现在在故事板中,在tabBarController上设置自定义类

Storyboard

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

class MyTabBarController: UITabBarController {

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

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

答案 1 :(得分:1)

Xcode 9

故事板

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

enter image description here

答案 2 :(得分:0)

您可以这样更改

  

tabBarController.tabBar.barTintColor = [UIColor blackColor];