有没有地方设置UINavigationBar的默认颜色?

时间:2012-06-21 16:51:12

标签: ios uinavigationbar uiappearance

我是一名新的iOS开发人员,负责开发由前员工创建的项目。目前所有导航栏都是黑色的,我需要将它们更改为默认的蓝色。到目前为止,我已经找到了这一行:

[self.navigationController.navigationBar setTintColor:[[UIColor colorWithHue:0.6 saturation:0.33 brightness: 0.65 alpha:1.0] autorelease]];

它有效,但我不认为这是正确的方法。我也创建了一个新的屏幕,颜色是蓝色的,所以我想在某个地方必须有一个设置。在xib文件中,Top Bar是none,我们在viewDidLoad

中有这个代码
if (self.navigationController.navigationBar.isHidden) {
        [self.navigationController setNavigationBarHidden:NO animated:YES]; 
    }
    else {
        [self.navigationController setNavigationBarHidden:NO animated:NO];
    }

问题是:我可以设置默认颜色的地方吗?或者我必须以编程方式进行。

4 个答案:

答案 0 :(得分:3)

在iOS 5中,您可以使用Appearence来执行此操作

  [[UINavigationBar appearance]setTintColor:[UIColor redColor]];

例如,您可以在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中执行此操作。

在以前版本的iOS中,您应该在NavigationBar上创建一个类别,并覆盖它的绘图方法。

答案 1 :(得分:1)

创建导航控制器时,您可以设置栏的颜色:

navigationController = [[UINavigationController alloc] initWithRootViewController: mainView];
self.navigationController.navigationBar.tintColor = [UIColor <whatever color you want>];

或者,如果您只想要默认的蓝色:

self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

答案 2 :(得分:1)

你正在以正确的方式做到这一点。当使用pushViewController时(例如,在UITableViewController中显示项目的详细视图时),可以在许多ViewController之间共享导航栏。

iOS5有一个新的UIAppearance功能,可以让您查看更详细的应用程序范围主题 - http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

答案 3 :(得分:1)

要设置默认颜色,请使用:

[[UINavigationBar appearance]setTintColor:nil];

要使用渐变设置不同的颜色,请使用:

[[UINavigationBar appearance]setTintColor:[UIColor colorWithHue:hue/359.0f
                                                     saturation:saturation/100.0f
                                                     brightness:brightness/100.0f
                                                          alpha:alpha]];

请注意;色调,饱和度,亮度和alpha属于float类型。