如何在导航栏上设置颜色`rightBarButtonItem`?

时间:2016-08-10 04:58:43

标签: ios objective-c iphone swift uinavigationbar

我想在导航栏上设置“完成”按钮的颜色,如下图所示:

enter image description here

虽然,我已将代码设置为self.doneButton.enabled = NO;,但“完成”按钮仍为白色。它不像图像那样改变颜色。

如何设置代码以更改文本颜色完成按钮,如上图中的完成按钮? 请帮我解决这个问题。我感谢您的帮助。

6 个答案:

答案 0 :(得分:5)

用于更改按钮使用的颜色

目标C

self.navigationItem.rightBarButtonItem = yourRightbarbuttonName;
self.navigationItem.rightBarButtonItem.tintColor = [UIColor blueColor]; // add your color

<强>夫特

或从故事板设置 Set bat button color

self.navigationItem.rightBarButtonItem = yourRightbarbuttonName
self.navigationItem.rightBarButtonItem.tintColor = UIColor.blueColor()

如果您想要显示正确的按钮,请使用

目标C

self.navigationItem.rightBarButtonItem.enabled = YES;

<强>夫特

self.navigationItem.rightBarButtonItem.enabled = true

如果您想隐藏右侧按钮,请使用

目标C

self.navigationItem.rightBarButtonItem.enabled = NO;

<强>夫特

self.navigationItem.rightBarButtonItem.enabled = false

答案 1 :(得分:1)

禁用按钮后添加以下行可能会有所帮助(但未测试)

self.navigationItem.rightBarButtonItem.tintColor = [UIColor lightGrayColor];

答案 2 :(得分:1)

您可以从图片Set bar button color

中显示的XIB / Storyboard进行设置

或者你可以设置你的barbutton项目的属性 - tintColor。

答案 3 :(得分:1)

试一下

UIBarButtonItem *rightBarButton=[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(editProfileClick)];
rightBarButton.tintColor=[UIColor whiteColor];
self.navigationItem.rightBarButtonItem = rightBarButton;


-(void)editProfileClick
{
//your methods
}

答案 4 :(得分:0)

谢谢大家的支持。我也像你一样更改代码,但是文字颜色为#34;完成&#34;按钮无法改变。现在,我已经为这个问题找到了一个很好的解决方案。

首先,我创建了一个像这样的通用函数:

- (void)changeStatusOfRightBarButton:(BOOL)enabled withColorAlpha:(CGFloat)numberAlpha {
    _doneButton.enabled = enabled;
    [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]
    setTitleTextAttributes:
    @{NSForegroundColorAttributeName:[UIColor colorWithHexString:@"FFFFFF" alpha:numberAlpha],
    NSFontAttributeName:[UIFont fontAvenirNextRegularWithSize:15.0f]
    }
    forState:UIControlStateNormal];

}

其次我将其应用于viewDidload

if (self.noteTextView.text.length == 0) {
    [self.noteTextView becomeFirstResponder];
    [self changeStatusOfRightBarButton:NO withColorAlpha:0.44f];

}

当我应用这些代码&#34;完成&#34;按钮改变了颜色。

答案 5 :(得分:0)

要更新右栏项目文本的颜色,我们应该使用“ setTitleTextAttributes”(swift 5)。请尝试这个:

let rightBarButton = UIBarButtonItem(title: "your text", style: .plain, target: nil, action: nil)
rightBarButton.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.black], for: .normal)
navigationItem.rightBarButtonItem = rightBarButton