2012-04-25 4 views
2

Как мне изменить цвет панели вкладок в этом коде? Моя панель вкладок черная. При щелчке измените его на синий. Я хочу изменить цвет жгута на любой другой цвет.Как изменить цвет панели вкладок в Xcode

Этот код из: 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]; 

        }      

       } 

ответ

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]; 
} 
+0

Я использую последний xcode с симулятором ios5 ... я пытаюсь поставить код до и после, и я получаю ошибку –

+0

, какую ошибку вы получаете? – TompaLompa

+0

Я делаю снимок экрана для ошибки по адресу: http: //imageupper.com/ s02/1/7/O13353450461627064_1.jpg –

0
tabBar.tintColor = [UIColor greenColor]; 
+0

и где мне нужно ввести код? –

+0

, когда требуется изменить цвет панели вкладок. В вашем коде я думаю, что перед этой строкой .... '[rootTabBarController addTabColor: tabberColor: [tabberOpacity doubleValue]];' – Nit

+0

это не работает ... я получаю красное предупреждение, когда я его пытаюсь :( –

0
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
self.tabBarController.tabBar.tintColor=[UIColor redColor]; 
return YES; 

} 

В AppDelegate.m

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"]]; 

Вот именно, что все;)

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 
Смежные вопросы