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

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

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

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

我将此代码放在视图控制器中,用于应用程序启动时显示的第一个选项卡,以便它“首先”运行。 据我所知,即使我有8个标签并使用更多…标签,它也能正常工作。

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

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

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

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

要创建UITabBarController的子类,只需转到file> new> file> cocoa touch class …然后像在这张照片中一样设置文件

添加文件

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

故事板

最后,在你的文件中创建了MyTabBarController (或者你称之为的任何东西):

 class MyTabBarController: UITabBarController { override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) self.tabBar.barTintColor = .blueColor() } ... 

Xcode 9

故事板

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

在此处输入图像描述