0

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

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

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

4

4 回答 4

1

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

例如,您可以创建UINavigationController被调用的子类MyNavigationController(无需添加任何行为),然后执行以下操作:

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

只有存在于您的子类中的 UINavigationBar 才会改变其外观。

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

于 2013-05-16T08:39:09.147 回答
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]];

希望这可以帮助。

于 2013-05-16T07:57:27.600 回答
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 的颜色,除了 ...”

于 2013-05-16T07:21:25.647 回答
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;
}
于 2013-05-16T07:33:29.083 回答