如何着色的UIBarButtonItem背景颜色?

我有一个包含2个按钮一个UIToolbar。 在工具栏上有一个色调:

toolbar.tintColor = [UIColor colorWithRed:(102.0/255.0) green:(20.0/255.0) blue:(11.0/255.0) alpha:1];

我怎样才能使按钮具有相似色调的颜色?

--------------解决方案-------------

我发现这个解决方案最好这里列出:色调的UIButton和的UIBarButtonItem。 不同的是接受的答案,它可以让你改变UIBarButtonItems独立的UINavigationBar的的颜色。

若链路出现在未来的下跌,它的要点是,你创建一个有色UISegmentedControl(与UISegmentedControlStyleBar)与一个段,然后创建一个使用的UIBarButtonItem,作为其自定义视图。

在iOS 5中,的UIBarButtonItem有tintColor财产。

做最好的方法是设置tintColor后添加按钮,它在iOS的4.0,加入到酒吧后不再更新按钮tintColor已定。

在发现这个帖子答案:

http://stackoverflow.com/questions/3151549/uitoolbar-tint-on-ios4

请参阅“更改UINavigationBarButtons的颜色”

编辑:我删除了链接,因为域名是下来...

在从谷歌缓存中的文字:



好吧,这里的另一个小技巧。 “如何改变工具栏上的按钮的颜色。”当然,这可以应用到任何工具栏,但我要证明在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循环遍历UINavigationBar的使用NSFastEnumeration子视图。 子视图,以供将来参考的话,我们输出的类别名称。 如果类名是UINavigationButton,那么我们有我们的看法。 我们所要做的就是设置tintColor属性,如果UINavigationButton。

就这样,我们就大功告成了!

另外,如果你想有一个范围较广,我建议创建一个新的UINavigationBar的类别,并把按钮的颜色改变方法在那里。 这是你的方法可以通过使用UINavigationBar的,而不必反复地重新创建同样的方法,任何类进行。

请记住,一个后退按钮和导航键是不一样的事情。 你将不得不单独颜色的后退按钮。

和往常一样,这里有一个链接到一个示例应用程序演示此代码:NavButtonColor.zip

UIBarButtonItems固有响应setTintColor尽管它不是公开的API。

我有一个自定义UINavigationBar运行此块子类:

for (UIView *subview in self.subviews) {
if ([subview respondsToSelector:@selector(setTintColor:)]) {
[subview performSelector:@selector(setTintColor:) withObject:[UIColor redColor]];
}
}

显然取代[UIColor redColor]与您选择的颜色。

分类:iphone 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.453 (s). 10 q(s)