更改UINavigationBar的背景颜色

时间:2012-03-31 11:05:31

标签: iphone user-interface

我想更改UINvaigationBar的背景颜色,我使用了tintColor属性,但它没有改变颜色。您可以查看以下代码。

在我的Appdelegate中,我创建了一个UITabBarController

tabbar = [[UITabBarController alloc] init];

然后我创建一个UINavigationController并将我的UITableViewController附加到它

UINavigationController *myNavigation = [[UINavigationController alloc] initWithRootViewController:myViewController];

然后将UINavigationControllers连接到我的tabbar,就像这样

[tabbar setViewControllers:viewControllers]; //viewControllers is an array of UINavigationControllers

我尝试在myAppdelegate中设置属性tintColor,就像这样

[[myNavigation navigationBar] setTintColor:[UIColor redColor]];

但是这没有按预期工作,所以我在我的ViewController

中尝试了相同的操作
 - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        [self.navigationController.navigationBar setTintColor:[UIColor blackColor]];
        self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
        self.navigationItem.title = @"Test";
    }

仍然没有任何反应。请查看下面的图片,了解导航栏的外观。

enter image description here

感谢您的帮助。

干杯 壶

1 个答案:

答案 0 :(得分:1)

作为一种解决方法,你可以在色彩的地方使用图像,请查看以下代码。

if ([myNavigation respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) {
        [myNavigation setBackgroundImage:[UIImage imageNamed:BAR_IMAGE_NAME] forbarMetrics:UIBarMetricsDefault];
    }else {
        [myNavigation insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:BAR_IMAGE_NAME]] autorelease]  atIndex:0];
    }