我正在使用十六进制颜色设置我的UINAvigatoinBar
颜色:
self.navigationController.navigationBar.barTintColor = UIColorFromRGB(0x212121);
它在IOS7
上运行良好,但在较低版本中,它崩溃了以下内容:
[UINavigationBar setBarTintColor:]: unrecognized selector sent to instance
我该怎么办呢?
答案 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];