UIBarButtonItem 标题文本始终是全局色调颜色
Posted
技术标签:
【中文标题】UIBarButtonItem 标题文本始终是全局色调颜色【英文标题】:UIBarButtonItem Title Text is Always Global Tint Color 【发布时间】:2014-05-22 23:38:56 【问题描述】:ios 7.0 及更高版本。
在 AppDelegate.m 中,我正在设置我的全局 tintColor:self.window.tintColor = myGlobalTintColor;
。
在我的表格视图控制器中,在编辑表格视图单元格时,我想要导航栏中的红色垃圾桶按钮,我有这个:
- (void)setEditing:(BOOL)editing animated:(BOOL)animate
[super setEditing:editing animated:animate];
if (editing) // Start editing
self.deleteBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(deleteButtonPressed)];
[self.deleteBarButtonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor redColor], NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];
self.navigationItem.rightBarButtonItems = @[self.deleteBarButtonItem];
尽管将NSForegroundColorAttributeName
设置为[UIColor redColor],
的代码行我从未看到红色。当按钮设置为.enabled = YES
时,我只是在我的全局色调中看到它,就像所有其他按钮一样:
我已经梳理了我的代码,并且我确定没有其他位置可以将其他任何内容设置为 myGlobalTintColor
。值得注意的是,这个UITableViewController
是从情节提要中实例化的。注释掉 AppDelegate.m 中的行只会将所有内容发送回默认的蓝色 tintColor
,但我仍然没有在删除按钮上看到红色。
【问题讨论】:
您是否尝试过设置色调颜色而不是标题文本属性? 你试过[self.deleteBarButtonItem setTintColor:[UIColor redColor]];
而不是setTitleTextAttributes:
吗?
我刚试过。很不幸的是,不行。设置self.deleteBarButtonItem.tintColor
什么也没做。
【参考方案1】:
原来问题是我使用了第三方库SDCAlertView
,而我正在设置
[[SDCAlertView appearance] setTintColor:globalTintColor];
由于某种原因,这导致我所有的 UINavigationBar
对象都呈现出它的 tintColor。
我通过简单地替换上面的代码来解决这个问题:
[[SDCAlertView appearance] setButtonTextColor:globalTintColor];
【讨论】:
请注意,tintColor
和 UIAppearance
在 iOS 7 中不能很好地配合使用(实际上不支持)。不过,您的解决方案看起来不错。
@ScottBerrevoets 谢谢!也许这就是我看到意外行为的原因。我正在做一些无论如何都不支持的事情。以上是关于UIBarButtonItem 标题文本始终是全局色调颜色的主要内容,如果未能解决你的问题,请参考以下文章