Ios 更改UINavigationController按钮的颜色

Ios 更改UINavigationController按钮的颜色,ios,uinavigationcontroller,uinavigationbar,ios7,tintcolor,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

我的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中的苹果应用程序正在这样做。

这应该可以。我只是用一个最小的应用程序进行了测试。确保在尝试着色时,leftBarButtonItem已实际设置


这应该行得通。我只是用一个最小的应用程序进行了测试。确保在尝试着色时,leftBarButtonItem已实际设置


我不确定,但如果您想将不同的颜色应用于左右栏按钮,则只需尝试独立应用
tintColor
,然后删除将
tintColor
设置为
navigationBar
的行。试试看

更新:


看起来苹果公司不想让我们再在左右两个按钮上应用不同的颜色了。
UINavigationBar
的某些属性的行为已从
iOS 7
更改。我已经在我的中给出了说明,您可以查看。

我不确定,但是如果您想将不同的颜色应用于左侧和右侧的条形按钮,则只需尝试独立应用
tintColor
,并删除将
tintColor
设置为
导航条的行。试试看

更新:


看起来苹果公司不想让我们再在左右两个按钮上应用不同的颜色了。
UINavigationBar
的某些属性的行为已从
iOS 7
更改。我已经在我的中给出了描述,您可以查看。

我在使用其他答案时遇到困难,但这对我来说非常有用

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

其中clearButton只是对左侧导航栏项的引用。使用ios7时,我在使用其他答案时遇到了困难,但这对我来说非常有效

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

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

我通过在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)
let filterStr=NSLocalizedString(“过滤器”,值:“过滤器”,注释:“导航栏项”)
self.searchButton=UIBarButtonItem.init(标题:filterStr,样式:.plain,目标:self,操作:#选择器()
self.searchButton?.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.gray],用于:uicontrol状态.正常)
self.navigationItem.setLeftBarButton(self.searchButton!,动画:false)

我通过在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)
let filterStr=NSLocalizedString(“过滤器”,值:“过滤器”,注释:“导航栏项”)
self.searchButton=UIBarButtonItem.init(标题:filterStr,样式:.plain,目标:self,操作:#选择器()
self.searchButton?.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.gray],用于:uicontrol状态.正常)
self.navigationItem.setLeftBarButton(self.searchButton!,动画:false)


查看ios 7应用程序后,我想这是无法完成的。查看ios 7应用程序后,我想这是无法完成的。您是否正在运行ios 7,因为当我运行上述应用程序时,上面的条形按钮文本为蓝色code@chris:不,我只是给你一个提示。是的,好吧,看来ios 7不喜欢这个,布局转换指南不喜欢将此作为一种可能性-@chris:是的,我知道。但我在想,如果他们删除了该部分,那么他们也应该删除左右条形按钮的
tintColor
属性。您是否在ios 7中运行,因为当我运行上述命令时,上面的条形按钮文本是蓝色的code@chris:不,我只是给你一个暗示。好的,似乎ios 7不喜欢这样,布局转换指南没有显示这种可能性-@chris:是的,我知道。但我在想,如果他们删除了该部分,那么他们也应该删除左右条按钮的
tintColor
属性。你正在运行的是ios 7吗?当然。哦,我刚刚注意到我只在模拟器。我注意到,特别是关于iOS 7中的条形和色调,模拟器和设备之间(甚至设备之间)的行为和bug可能不同.马上回来。我已经在设备上试用过了;请参阅附加的屏幕截图。请原谅颜色选择,这是一个测试应用程序,旨在使颜色差异非常清晰。注意:如果这对您不起作用,可能是顺序问题。可能您的更改被某些内容覆盖。在我的测试项目中(最初是为了测试其他东西而创建的),我在加载视图后(但在显示之前)在外部设置
rootVC.navigationItem.RightBarButtonim.tintColor
。在任何情况下,都有办法让它工作,如果它不能立即工作,请稍后尝试设置tintColor(如在loadView中).是我的眼睛还是你的照片在青绿色导航条的左右两侧都有蓝色文字?这是你正在运行的ios 7吗?当然。哦,我刚刚注意到我只在模拟器上进行了测试。我注意到,特别是ios 7中的条带和色调,模拟器和设备之间的行为和错误可能有所不同(甚至在设备之间)。请稍后。我已经在设备上试用过了;请参阅附件中的屏幕截图。请原谅颜色选择,这是一个旨在使颜色差异非常清晰的测试应用程序。注意:如果这对您不起作用,可能是顺序问题。可能您的更改被某些内容覆盖。在我的测试项目中(最初是为了测试其他东西而创建的),我设置了
rootVC.navigationItem.RightBarButtonim.tintColo