为总应用更改单个导航栏颜色

时间:2013-05-16 07:15:13

标签: ios objective-c uinavigationbar

我在我的应用程序中使用了两个UINavigationBar,现在我正在应用主题到我的应用程序我试图使用这行代码更改总应用程序的导航栏颜色

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

我得到两个黑色的导航栏有没有办法改变整个应用程序的单个导航栏颜色

4 个答案:

答案 0 :(得分:1)

您可以使用[UINavigationBar appearance]更具体地了解哪些UINavigationBars根据其上下文进行更改。而不是[UINavigationBar appearanceWhenContainedIn:...]

例如,你可以创建一个UINavigationController的子类MyNavigationController(不需要添加任何行为)然后执行:

[[UINavigationBar appearanceWhenContainedIn:[MyNavigationController class], nil] setTintColor:[UIColor blackColor]];

只有位于子类中的UINavigationBars才会更改其外观。

我在iPad应用程序中使用了这个想法,我希望在模态FormSheets中出现的UINavigationBars看起来与应用程序中的其他UINavigationBars不同。

答案 1 :(得分:0)

要更改全部导航栏颜色,您可以使用方法

[[UINavigationBar appearance] setBackgroundColor:[UIColor blueColor]];

要更改整体字体,您可以使用以下内容:

-(void) changeNavigationBarStyle{
      [[UINavigationBar appearance] setTitleTextAttributes:
      [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0],
      UITextAttributeTextColor,
      [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.8f],
      UITextAttributeTextShadowColor,
      [NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
      UITextAttributeTextShadowOffset,
      [UIFont fontWithName:@"ChalkboardSE-Bold" size:0.0],
      UITextAttributeFont,
      nil]];

    NSMutableDictionary *attributes = [NSMutableDictionary dictionaryWithDictionary: [[UIBarButtonItem appearance] titleTextAttributesForState:UIControlStateNormal]];
    [attributes setValue:[UIFont fontWithName:@"ChalkboardSE-Bold" size:0.0f] forKey:UITextAttributeFont];
    [[UIBarButtonItem appearance] setTitleTextAttributes:attributes forState:UIControlStateNormal];

}

根据评论编辑
要更改应用程序中所有UINavigationBars的颜色(本例中为蓝色),可以调用

[[UINavigationBar appearance] setBackgroundColor:[UIColor blueColor]];

要更改一个UINavigationBar的颜色,您可以调用

self.navigationController.navigationBar.tintColor = [UIColor blueColor];

没有中间地方你可以说“改变所有UINavigationBar的颜色,除了......”

答案 2 :(得分:0)

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
   self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];


    if(isiPhone5)
    {
        self.LoadinFirst = [[LoadingFirstViewController alloc] initWithNibName:@"LoadingFirstView-iPhone5" bundle:nil];
    }
    else {
        self.LoadinFirst = [[LoadingFirstViewController alloc] initWithNibName:@"LoadingFirstView" bundle:nil];
    }
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.LoadinFirst];

    [navigationController.navigationBar setBarStyle:UIBarStyleBlack];

    [navigationController.navigationBar setTintColor:[UIColor colorWithRed:192/255.00f green:182/255.00f blue:184/255.00f alpha:1.0f]];
    self.window.rootViewController =navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

答案 3 :(得分:0)

如果您想在导航栏中添加所需颜色的图像,可以使用

if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) 
    {
        UIImage *image = [UIImage imageNamed:@"titlebg.png"] ;
        [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
    }

否则您可以使用

轻松设置色调
[navigationController.navigationBar setTintColor:[UIColor colorWithRed:102/255.00f green:182/255.00f blue:114/255.00f alpha:1.0f]];

希望这会有所帮助。