如何在IOS 6/7上设置导航栏颜色

时间:2013-11-28 09:28:52

标签: ios objective-c user-interface ios7 uinavigationbar

我正在使用十六进制颜色设置我的UINAvigatoinBar颜色:

self.navigationController.navigationBar.barTintColor = UIColorFromRGB(0x212121);

它在IOS7上运行良好,但在较低版本中,它崩溃了以下内容:

[UINavigationBar setBarTintColor:]: unrecognized selector sent to instance

我该怎么办呢?

6 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:5)

最佳解决方案是检测操作系统的版本:

-(void)viewWillAppear:(BOOL)animated {

   NSString *ver = [[UIDevice currentDevice] systemVersion];
   int ver_int = [ver intValue];

   if (ver_int < 7) {
       [self.navigationController.navigationBar setTintColor:[UIColor UIColorFromRGB(0x212121)]];
    }

   else {
    self.navigationController.navigationBar.barTintColor = [UIColor UIColorFromRGB(0x212121)];
   }

 }

答案 2 :(得分:5)

我认为最好的方法是使用respondToSelector方法而不是检查iOS版本:

if ([self.navigationController.navigationBar respondsToSelector:@selector(setBarTintColor:)]) {
    [self.navigationController.navigationBar setBarTintColor:NAVBAR_BACKGROUNDCOLOR];
}
else {
    [self.navigationController.navigationBar setTintColor:NAVBAR_BACKGROUNDCOLOR];
}

答案 3 :(得分:2)

您需要检查操作系统版本。如果是IOS7,那么您可以使用 barTintColor 。在IOS6中,您可以使用 tintColor

if ([self checkOSVersion] >= 7) {
        [[UINavigationBar appearance] setBarTintColor:[UIColor UIColorFromRGB(0x212121)]];
        [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
    } else {
        [[UINavigationBar appearance] setTintColor:[UIColor UIColorFromRGB(0x212121)]];
    }

将操作系统版本检查方法定义为

- (int)checkOSVersion {

    NSArray *ver = [[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."];
    int osVerson = [[ver objectAtIndex:0] intValue];
    return osVerson;
}

答案 4 :(得分:1)

[self.navigationController.navigationBar setTintColor:[UIColor redColor]];

答案 5 :(得分:1)

self.navigationController.navigationBar.tintColor=[UIColor colorWithRed:(45/255.f) green:(45/255.f) blue:(45/255.f) alpha:1.0f];