UIBarButtonItem setTintColor在iOS7上不起作用

时间:2013-10-02 06:57:05

标签: ios7 uibarbuttonitem uicolor

在iOS6中,我使用此代码制作了我的UIBarButtonItem:

UIBarButtonItem* validate = [[UIBarButtonItem alloc]initWithTitle:@"MyTitle" style:UIBarButtonItemStylePlain target:self action:@selector(actionValidate)];
    [validate setTintColor:[UIColor orangeColor]];
    self.navigationItem.rightBarButtonItem = validate;

它在iOS6中工作正常,但在iOS7中,按钮的颜色只有在你推动时才会改变。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

在iOS7中,如果您需要更改navigationBar按钮颜色,则必须为tintColor设置navgationBar,而不再为特定barButton设置{。} >

navigationController.navigationBar.tintColor = [UIColor orangeColor];

编辑:这适用于iOS7,您需要进行检查:

float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
if (systemVersion >= 7.0)
{
    navigationController.navigationBar.tintColor = [UIColor orangeColor]
}

答案 1 :(得分:2)

我无法使用@Chris的方法(iOS 8就像@Adama所说)。

我的用例是我要设置所有UIToolbar& UINavigationBar按钮为默认颜色。所以使用UIAppearance API:

UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.redColor()], forState: .Normal)