如何更改此代码中的标签栏颜色?我的标签栏是黑色的。点击后将其更改为蓝色。我想将拖曳颜色改为任何其他颜色。
此代码来自:application.m 那里:rotatingTabBarController.m,rotatingTabBarController.h
// 1B) If this app uses tabs, create a tabbed navigation application and set the default screen for each tab
// to the defaultScreenGuid in the tabs data
if([self.tabs count] > 0){
[BT_debugger showIt:self:[NSString stringWithFormat:@"building a tabbed based navigation app%@", @""]];
if([self.screens count] > 0){
//appDelegate
qoqb_appDelegate *appDelegate = (qoqb_appDelegate *)[[UIApplication sharedApplication] delegate];
//initialize the tab bar controller
rootTabBarController = [[BT_rotatingTabBarController alloc] init];
[rootTabBarController.view setFrame:[[UIScreen mainScreen] bounds]];
[rootTabBarController setDelegate:appDelegate];
rootTabBarController.view.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
//if we have a tabbar color setup in the theme
if(self.rootTheme != nil){
if([self.rootTheme.jsonVars objectForKey:@"tabBarColor"]){
if([[self.rootTheme.jsonVars objectForKey:@"tabBarColor"] length] > 3){
UIColor *tabberColor = [BT_color getColorFromHexString:[self.rootTheme.jsonVars objectForKey:@"tabBarColor"]];
NSString *tabberOpacity = @".50";
if([self.rootTheme.jsonVars objectForKey:@"tabBarColorOpacity"]){
if([[self.rootTheme.jsonVars objectForKey:@"tabBarColorOpacity"] length] > 0){
tabberOpacity = [NSString stringWithFormat:@".%@", [self.rootTheme.jsonVars objectForKey:@"tabBarColorOpacity"]];
if([tabberOpacity isEqualToString:@".100"]) tabberOpacity = @".50";
}
//colorize the tab-bar
[rootTabBarController addTabColor:tabberColor:[tabberOpacity doubleValue]];
}
}
}
}
//Fill a temporary array of view controllers to assign to tab bar controller
NSMutableArray *tmpViewControllers = [[NSMutableArray alloc] init];
//loop through each tab bar item in application data
for(int i = 0; i < [[self tabs] count]; i++){
//this tab
BT_item *thisTab = (BT_item *)[[self tabs] objectAtIndex:i];
NSString *textLabel = [[thisTab jsonVars] objectForKey:@"textLabel"];
UIImage *tabIcon = [UIImage imageNamed:[[thisTab jsonVars] objectForKey:@"iconName"]];
//get the screen from the apps array of screens for this tab's view controller
if([[thisTab jsonVars] objectForKey:@"homeScreenItemId"]){
BT_item *thisTabsDefaultScreenData = [self getScreenDataByItemId:[[thisTab jsonVars] objectForKey:@"homeScreenItemId"]];
//if this is the first tab in the list, remember it as the "currently loaded screen", also make it the "previously loaded screen"
if(i == 0){
[self setCurrentScreenData:thisTabsDefaultScreenData];
[self setPreviousScreenData:thisTabsDefaultScreenData];
[thisTabsDefaultScreenData setIsHomeScreen:TRUE];
//if theScreen has an audio file..load it in the delegate
if([[BT_strings getJsonPropertyValue:thisTabsDefaultScreenData.jsonVars:@"audioFileName":@""] length] > 3){
//appDelegate
qoqb_appDelegate *appDelegate = (qoqb_appDelegate *)[[UIApplication sharedApplication] delegate];
//initialize audio in different thread to prevent UI blocking
[NSThread detachNewThreadSelector: @selector(loadAudioForScreen:) toTarget:appDelegate withObject:thisTabsDefaultScreenData];
}
}
答案 0 :(得分:6)
tabBar.tintColor = [UIColor greenColor];
如果您的IOS版本不是IOS 5,将崩溃,请参阅docs
更安全的方法是:
if ([tabBarController.tabBar respondsToSelector:@selector(setTintColor:)]) {
[tabBarController.tabBar setTintColor:color];
}
//新代码
if ([rootTabBarController.tabBar respondsToSelector:@selector(setTintColor:)]) {
[rootTabBarController.tabBar setTintColor:tabberColor];
}
答案 1 :(得分:1)
在AppDelegate.m里面:application didFinishLaunchingWithOptions:
使用此编码:
// use this for highlighted color
[[UITabBar appearance] setSelectedImageTintColor:[UIColor colorWithRed:(256/256.0) green:(0/256.0) blue:(0/256.0) alpha:(1.0)]];
// Use this to channge the tint colo of the entere TabBar
[[UITabBar appearance] setTintColor:[UIColor colorWithRed:(255/256.0) green:(0/256.0) blue:(0/256.0) alpha:(1.0)]];
// This change only a background color
[[UITabBar appearance] setBackgroundColor:[UIColor colorWithRed:(255/256.0) green:(255/256.0) blue:(255/256.0) alpha:1.0]];
// This for change IMG or color tint on back of highlighted button.
[[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"YourIMG.png"]];
就是这就是全部;)
答案 2 :(得分:0)
tabBar.tintColor = [UIColor greenColor];
答案 3 :(得分:0)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.tabBarController.tabBar.tintColor=[UIColor redColor];
return YES;
}
在AppDelegate.m中
答案 4 :(得分:0)
在IOS7中,这是以不同的方式完成的:
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
您可以按照以下步骤操作:
我创建了一个新的UINavigationController
,例如UIDemoNavController
,结果是:
- (void)viewDidLoad{
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
[super viewDidLoad];
}
这是完整的演示类:
#import "UIDemoNavController.h"
@interface UIDemoNavController()
@end
@implementation UIDemoNavController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {}
return self;
}
- (void)viewDidLoad{
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning{
[super didReceiveMemoryWarning];
}
@end