更改UINavigationController按钮的颜色

时间:2013-10-01 07:55:53

标签: ios uinavigationcontroller uinavigationbar ios7 tintcolor

我在UINavigationController中有这个:

(void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view.

    self.navigationBar.tintColor = [UIColor whiteColor];
    self.navigationBar.barTintColor = [UIColor blackColor];
    self.navigationItem.leftBarButtonItem.tintColor = [UIColor greenColor];
    //self.navigationItem.rightBarButtonItem.tintColor = [UIColor greenColor];
    //self.navigationItem.rightBarButtonItem = nextButton;
}

前两行正常工作:导航栏的文本为白色,背景为黑色。第三次(当我尝试时第四次),似乎被忽略了。

如何使左右条形按钮的文字颜色为不同颜色?我在ios7中看到Apple的应用程序就是这样做的。

4 个答案:

答案 0 :(得分:1)

这应该有效。我刚刚测试了一个最小的应用程序。确保在尝试着色时实际设置了leftBarButtonItem。

Different tint colors for left and right UINavigationBar items on iOS 7 iPad 3

答案 1 :(得分:1)

我不确定但是如果你想将不同颜色应用于栏按钮,那么只需尝试独立应用tintColor并删除将tintColor设置为navigationBar的行。试试吧。

更新:

看起来Apple不再希望我们在 left right 栏按钮上应用不同的颜色了。 UINavigationBar的某些属性的行为已从iOS 7更改。我已在Answer中给出了说明,您可以查看。

答案 2 :(得分:1)

我在使用其他答案时遇到了麻烦,但这对我来说很有用。

[self.clearButton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                         [UIColor redColor], NSForegroundColorAttributeName,
                                         nil] forState:UIControlStateNormal];

其中clearButton只是对左侧导航栏项的引用。使用ios7。

答案 3 :(得分:0)

我是通过使用以下方法在AppDelegate中设置常规颜色来实现的:

UINavigationBar.appearance().tintColor = tintColor

然后我会在各个视图控制器中创建自定义栏按钮项,并将其设置为leftBarButton或rightBarButton。

 let filterStr = NSLocalizedString("FILTER", value: "Filter", comment: "Navigation bar item")
 self.searchButton = UIBarButtonItem.init(title: filterStr, style: .plain, target: self, action: #selector(<someMethod()>)     
 self.searchButton?.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.gray], for: UIControlState.normal)
 self.navigationItem.setLeftBarButton(self.searchButton!, animated: false)

enter image description here