我有一个UIToolbar,然后将两个UIBarButtonItem添加到UIToolbar的项目中。如何更改UIBarButtomItem的颜色?我在文档中找不到API。
答案 0 :(得分:1)
请参阅“更改UINavigationBarButtons的颜色”
编辑:我删除了该链接,因为域已关闭...
来自Google缓存的文字:
好的,这是另一个快速提示。 “如何更改工具栏上按钮的颜色。”当然,这可以应用于任何工具栏,但我将在UINavigationBar上演示该过程。
上图仅显示几种颜色。事实上,您可以使按钮成为您想要的任何颜色。太棒了!代码执行起来非常简单。我们要做的第一件事是打开头文件,无论哪个对象将导航条按钮变成不同的颜色,并声明前向类UINavigationButton。你可以通过迭代UINavigationBar的子视图,读取它的子视图类名,或者如果你有一个越狱设备,通过类倾销UIKit来获得这个类。
在接口声明之前放置以下行:
@class UINavigationButton;
现在,在标题中声明一个新方法,我们将用它来实际更改按钮的颜色。
- (void)changeNavigationButtonColorToColor:(UIColor *)newColor
或类似上面的代码行。
现在,打开对象的实现文件并实现上述方法。在文件中的任何位置添加以下方法:
- (void)changeNavigationButtonColorToColor:(UIColor *)newColor {
for (UIView *view in self.navigationController.navigationBar.subviews) {
NSLog(@"%@", [[view class] description]);
if ([[[view class] description] isEqualToString:@"UINavigationButton"]) {
[(UINavigationButton *)view setTintColor:newColor];
}
}
}
正如您在上面所看到的,这实际上比它最初看起来要容易得多。我们首先要做的是设置一个for循环来使用NSFastEnumeration迭代UINavigationBar的子视图。然后我们输出子视图的类名,以供将来参考。如果类名是UINavigationButton,那么我们就得到了我们的观点。我们所做的就是设置tintColor属性,如果是UINavigationButton。
就是这样,我们完成了!
或者,如果您想要更广泛的范围,我建议创建一个新的UINavigationBar类别并在其中放置按钮颜色更改方法。这是你的方法可以由任何使用UINavigationBar的类执行,而不必反复重新创建相同的方法。
请记住,后退按钮和导航按钮不是一回事。您必须单独为后退按钮着色。
和往常一样,这里有一个演示此代码的示例应用的链接:NavButtonColor.zip
答案 1 :(得分:0)
UIBarButtomItem在自定义方面有局限性,因此您可以使用UIButton代替UIBarButtonItem,它将为您提供更多自定义。
答案 2 :(得分:0)
对于不使用私有API的解决方案。
你可以通过使UISegmentedControl看起来像UIBarButtonItem来伪造它。
http://fredandrandall.com/blog/2011/03/31/how-to-change-the-color-of-a-uibarbuttonitem/