更改UIBarButtonItem颜色

问题描述:

我已经在代码中创建了自定义栏按钮项目。更改UIBarButtonItem颜色

UIButton* backButton = [UIButton buttonWithType:102]; // left-pointing shape! 
[backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; 
[backButton setTitle:@"Custom Item" forState:UIControlStateNormal]; 

// create button item -- possible because UIButton subclasses UIView! 
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
self.navigationItem.leftBarButtonItem = backItem; 

但它显示为深蓝色。我需要获得默认的外观和感觉。如何设置默认的外观和感觉?

问候,

Dilshan

可能错误的问题,但是如果您担心的外观和你为什么要使用未定义UIButtonType以巧妙“指着左”按钮有什么感觉?左指向按钮用于弹出备份导航堆栈,如果使用UINavigationController,我认为它可以免费使用。

+0

可能是我使用了一个令人困惑的变量名称。其实我需要自定义这个按钮。预期的功能不是支持功能。 – Dilshan 2010-10-22 18:18:04

+0

那么,你不是在寻找一个左指向的按钮?只是想清楚约束是什么。 – westsider 2010-10-22 19:17:52

+0

是自定义的左键 – Dilshan 2010-10-23 13:36:18

请参阅 “更改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循环,使用NSFastEnumeration遍历UINavigationBar的子视图。然后我们输出子视图的类名,以供将来参考。如果类名是UINavigationButton,那么我们已经看到了我们的观点。我们所做的就是设置tintColor属性,如果UINavigationButton。

就是这样,我们完成了!另外,如果你想要更广泛的范围,我建议创建一个新的UINavigationBar类别,并在其中放置按钮颜色改变方法。这是你的方法可以由任何使用UINavigationBar的类执行,而不必一遍又一遍地重新创建相同的方法。

请记住,后退按钮和导航按钮不是一回事。您将不得不单独对后退按钮着色。

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


@Rob:是的,它的工作原理为工具栏,太!

- (void)changeToolbarButtonColorToColor:(UIColor *)newColor { 
    for (UIView *view in self.navigationController.toolbar.subviews) {     
     if ([[[view class] description] isEqualToString:@"UIToolbarButton"]) {       
      [(UINavigationButton *)view setTintColor:newColor];    
     } 
    }  
} 

要小心:您必须在第二行使用“toolbar”,在第三行使用“UIToolbarButton”。
viewDidLoad添加以下代码:

- (void)viewDidLoad { 
    [self changeToolbarButtonColorToColor: [UIColor colorWithRed:0.0/255 green:163.0/255 blue:224.0/255 alpha:1]]; 
} 

这一切! :)

+0

你有没有得到这个在UIToolBar上工作?我想让我的“购买”按钮变为红色。 – Rob 2011-04-21 09:00:09

+0

我编辑我的答案:) – Manni 2011-04-21 12:51:55