22

我有一个具有 a 的应用程序,UINavigationBar并且我已将色调颜色设置为黑色,如下所示:

self.navigationController.navigationBar.tintColor = [UIColor blackColor];`

我已经在 IOS 6 中测试过它,它是黑色的。但是,当我在 iOS 7 中尝试相同的应用程序时,它显示为默认导航栏。

正如标题所说,它不起作用吗?

4

6 回答 6

22

您需要设置 barTintColor 属性。

您可以使用 Tint (barTintColor) 字段为导航栏背景指定自定义色调颜色。默认背景色调为白色。

来自 iOS7 文档:https ://developer.apple.com/library/content/documentation/UserExperience/Conceptual/UIKitUICatalog/UINavigationBar.html#//apple_ref/doc/uid/TP40012857-UINavigationBar-SW1

于 2013-06-11T14:40:19.037 回答
17

Fernando 和 sanjana 的答案是关键,但我将添加一些内容以使其更清晰、更明显。

导航栏有两个属性

  • 色调颜色
  • barTintColor

当您不以 iOS 7 术语思考时,这有点误导。

tintColor更改导航栏上按钮的颜色。要更改背景颜色,您需要设置属性barTintColor

self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
self.navigationController.navigationBar.tintColor = [UIColor greenColor];

此代码段将为您提供带有绿色按钮的白色导航栏。

于 2014-02-21T13:08:00.393 回答
9

我使用以下代码在 iOS7 中更改导航栏的色调,我在应用程序委托“applicationDidFinishLaunch”方法中添加了这个,它对我来说工作正常:

/* ios 7 Change */
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
    {
        [[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x4B678B)];
        NSShadow *shadow = [[NSShadow alloc] init];
        shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
        shadow.shadowOffset = CGSizeMake(0, 1);
        [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
                                                               [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
                                                               shadow, NSShadowAttributeName,
                                                               [UIFont fontWithName:@"Helvetica Neue" size:21.0], NSFontAttributeName, nil]];
        // self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
        //[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
        [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

    }
于 2013-10-17T08:30:07.237 回答
4

有同样的问题,但通过情节提要文件解决了。

试试下面的。

  1. 打开您的 .storyboard 文件。
  2. 使用导航控制器选择场景
  3. 选择导航栏项目进入导航控制器场景 在此处输入图像描述

  4. 打开 XCode 右侧的 Utilities 选项卡

  5. 打开属性检查器
  6. 在“导航栏”组中,将有 Bar Tint 下拉列表。您可以为色调选择任何颜色。 在此处输入图像描述
于 2013-11-15T08:28:14.663 回答
4

以下代码对我有用:

self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
于 2013-10-17T08:20:52.780 回答
3
    [UINavigationBar appearance].tintColor = [UIColor redColor];
    if ([[UINavigationBar appearance] respondsToSelector:@selector(setBarTintColor:)]) {
        [UINavigationBar appearance].barTintColor   = [UIColor redColor];
    }

//或者

    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    if ([self.navigationController.navigationBar respondsToSelector:@selector(setBarTintColor:)]) {
        self.navigationController.navigationBar.barTintColor    = [UIColor redColor];
    }
于 2013-10-25T09:51:47.297 回答