更改UINavigationController按钮的颜色

18 浏览
0 Comments

更改UINavigationController按钮的颜色

在我的UINavigationController中,我有以下代码:\n

(void)viewDidLoad
{
    [super viewDidLoad];
    // 加载视图后进行任何其他设置
    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;
}

\n前两行代码正常工作:导航栏的文本是白色的,背景是黑色的。第三行(和我尝试的第四行),似乎被忽略了。\n如何使左右栏按钮的文本颜色为不同的颜色?我在iOS 7中看到Apple的应用程序是这样做的。

0
0 Comments

问题出现的原因:在iOS7中,UITextAttributeTextColor属性已被废弃,需要使用NSForegroundColorAttributeName属性来改变导航栏按钮的颜色。

解决方法:

使用NSForegroundColorAttributeName属性来改变导航栏按钮的颜色。具体的代码如下:

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

其中,clearButton是对左侧导航栏按钮的引用。

注意:以上解决方法适用于iOS7。

0
0 Comments

问题出现的原因:可能是代码中的设置顺序问题导致的。

解决方法:将tintColor的设置放在合适的位置,例如在loadView方法中设置。

0
0 Comments

原因:在iOS 7之后,Apple改变了UINavigationBar的一些属性行为,不再允许我们为左右bar按钮应用不同的颜色。

解决方法:尝试在左右bar按钮上分别应用tintColor,并移除将tintColor设置为navigationBar的代码。

0