更改UINavigationItem颜色

时间:2011-09-06 03:44:43

标签: iphone objective-c xcode uinavigationbar

我需要为我的UINavigationBar按钮设置自定义颜色。 我正在做以下事情(RGB func是一个定义):

- (void)viewWillAppear:(BOOL)animated
{

for (UIView *view in self.navigationController.navigationBar.subviews)      
    if ([[[view class] description] isEqualToString:@"UINavigationButton"])
        [(UINavigationButton *)view setTintColor:RGB(22.0,38.0,111.0)];

 }

应用程序加载一切正常。离开视图并返回后,颜色将恢复为默认值。

其次,我需要将相同的颜色设置为UISegmentedControl到按下的按钮。

3 个答案:

答案 0 :(得分:1)

[更改UINavigationItem颜色](http://www.skylarcantu.com/blog/2009/11/05/changing-colors-of-uinavigationbarbuttons/“更改UINavigationBarButtons的颜色”)和to set same color to UISegmentControl将有助于你到达目的地。

Here是将颜色设置为UISegmentControl的示例代码。

答案 1 :(得分:0)

这是一种方式:

[[theNavigationBar.subviews objectAtIndex:1] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[[theNavigationBar.subviews objectAtIndex:2] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

然而,巨大的,警告。这很可能会破坏未来的操作系统版本,不推荐使用。

至少你应该进行大量的测试,并确保你对导航栏的子视图布局的假设是正确的。 要么 您可以通过更改UINavigationBar

的tintColor属性来更改颜色
myBar.tintColor = [UIColor greenColor];

或 您可以点击以下链接   http://www.skylarcantu.com/blog/2009/11/05/changing-colors-of-uinavigationbarbuttons/

答案 2 :(得分:0)

对于IOS5,必须使用"setBackgroundImage:forBarMetrics:"

尝试此代码以应用所有UINavigationItem / UINavigationBar

 if([[UINavigationBar class] respondsToSelector:@selector(appearance)]){ //iOS >=5.0
    //use for UINavigationBar Custom image.
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithNamed:@"navImage.png"] forBarMetrics:UIBarMetricsDefault];

    //use for UINavigationItem custom color
    [[UINavigationBar appearance] setTintColor:[UIColor greenColor]];
}