【发布时间】: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