UITabBarController不会改变“更多”按钮图标的颜色

时间:2016-01-18 23:18:27

标签: ios swift uitabbarcontroller

我的应用程序有一个UITabBar。由于它有太多的视图可以同时显示所有视图,因此它具有“更多”按钮,该按钮会下拉显示其余视图的tableView。我试图更改图标的颜色以匹配底部的其余图标,因为出于某种原因,底部图标的默认值为灰色,而更多视图中的图标为蓝色。我设法通过添加以下内容来实现它:

self.tabBarController?.moreNavigationController.view.tintColor = .grayColor()

我在viewDidLoad函数的第一个标签的视图控制器中添加了这一行。再一次,这很有效,但把它放在那里感觉不对,所以我做了UITabBarController并将该行放在该控制器的viewDidLoad中。然后,我通过故事板将控制器与身份检查器的“自定义类”部分中的类字段连接起来。通过这种方式,TabBar不再使用它,图标变回蓝色。

我的问题是:我应该在第一个加载的viewController中保留该行吗?或者我应该把那条线完全放在其他地方?

第一张图片:显示tabBar上的底部图标,当前选中的图标为黑色,其他图标为灰色。 enter image description here

第二张图片:显示整个屏幕,底部有标签栏,选择的页面越多,如您所见,图标为蓝色,我想将这些图标更改为灰色。 enter image description here

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用

UITabBar.appearance().tintColor = UIColor.grayColor()

虽然这会影响View Controller可以访问的所有标签栏(我相信),所以要小心。但是它应该更改标签栏,无论它是UITabBar还是UITabBarController。

答案 1 :(得分:0)

试试这个: 创建一个扩展UITabBarController的新类,然后使用self.tabBarController?.moreNavigationController.view.tintColor = .grayColor()

使用 self.moreNavigationController.view.tintColor = .grayColor()

示例:

class TabBarViewController: UITabBarController{
    override func viewDidLoad() {
        super.viewDidLoad()
        self.moreNavigationController.view.tintColor = .grayColor
    }
}