【问题标题】:How to get rid of UIBarButtonItem's title label becomes dark on highlighted state如何摆脱 UIBarButtonItem 标题标签在突出显示状态下变暗
【发布时间】:2016-03-25 13:47:39
【问题描述】:

我的问题是我无法在 UIControlStateHighlighted 上设置 UIBarButtonItem 标题标签的确切颜色。似乎 UINavigationBar 在突出显示的标题标签顶部添加了一些深色“颜色叠加”,我不知道如何禁用它。

我的 UIBarButtonItem 带有通过外观配置的标题文本,我需要正常和突出显示状态的确切颜色,所以我以这种方式配置 UIBarButtonItems:

UIBarButtonItem *barButtonItemAppearance = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil];

NSDictionary * textAttributes = @{
    NSForegroundColorAttributeName : blueColor,
};
[barButtonItemAppearance setTitleTextAttributes:textAttributes forState:UIControlStateNormal];

NSDictionary * selectedTextAttributes = @{
    NSForegroundColorAttributeName : whiteColor
};
[barButtonItemAppearance setTitleTextAttributes:selectedTextAttributes forState:UIControlStateHighlighted];

将UIBarButtonItem添加到UINavigationBar的代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    UIBarButtonItem *logoutButtonItem = [[UIBarButtonItem alloc] initWithTitle:title
                                                style:UIBarButtonItemStylePlain
                                               target:target
                                               action:action];
    [self.navigationItem setRightBarButtonItem:logoutButtonItem];         
}

请查看随附的屏幕截图。

我希望我的突出显示栏按钮是白色的。 我尝试将 UIButton 作为标题添加到 UIBarButtonItem 的 customView 属性,并将 UIButton 配置为正常和突出显示的状态。这很好用,我在突出显示时看不到清晰的白色:

UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom];
[customButton setTitle:title forState:UIControlStateNormal];
[customButton setTitleColor:blueColor forState:UIControlStateNormal];
[customButton setTitleColor:whiteColor forState:UIControlStateHighlighted];
[customButton sizeToFit];
[customButton addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:customButton];

它解决了我的问题,但也许还有另一种方法,更好的解决方案,而不添加 UIButton?

【问题讨论】:

    标签: ios uikit uinavigationbar uibarbuttonitem


    【解决方案1】:

    在添加 uibarbutton 之前,只需将其正常和突出显示的属性颜色设置为您想要的颜色。

    【讨论】:

    • 我刚刚为正常和高亮状态添加了titleTextAttributes。但是当项目突出显示时,我在屏幕上看到的是颜色变深了。
    • 还有一个标题颜色的属性你也要设置
    猜你喜欢
    • 2021-08-26
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多