在iOS7中测试的UINavigationBar设置tintcolor无法正常工作?

时间:2013-06-11 10:19:41

标签: iphone objective-c ios7 uinavigationcontroller tintcolor

我有一个有UINavigationBar的应用,我将色调颜色设置为黑色,如下所示:

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

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

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

6 个答案:

答案 0 :(得分:21)

您需要设置barTintColor属性。

  

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

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

答案 1 :(得分:16)

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

导航栏有两个属性

  • tintColor
  • barTintColor

如果您不考虑iOS 7条款,这有点误导。

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

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

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

答案 2 :(得分:9)

我使用以下代码来改变iOS7中导航栏的色调,我在app delegate“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]];

    }

答案 3 :(得分:4)

以下代码对我有用:

self.navigationController.navigationBar.barTintColor = [UIColor blackColor];

答案 4 :(得分:4)

有同样的问题,但通过故事板文件解决了。

请尝试以下操作。

  1. 打开.storyboard文件。
  2. 使用导航控制器选择场景
  3. 在导航控制器场景中选择导航栏项 enter image description here

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

  5. 打开属性检查器
  6. 在“导航栏”组中,将显示Bar Tint下拉列表。您可以为色调选择任何颜色。 enter image description here

答案 5 :(得分:3)

    [UINavigationBar appearance].tintColor = [UIColor redColor];
    if ([[UINavigationBar appearance] respondsToSelector:@selector(setBarTintColor:)]) {
        [UINavigationBar appearance].barTintColor   = [UIColor redColor];
    }

// OR

    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    if ([self.navigationController.navigationBar respondsToSelector:@selector(setBarTintColor:)]) {
        self.navigationController.navigationBar.barTintColor    = [UIColor redColor];
    }