Massimo Oliviero

I deliri digitali di un programmatore informatico e aspirante fotografo…
luglio 25th, 2011 by Massimo

iOS colorare la NavigationBar More e il Configure di un UITabBarController (color)

Il comportamento di default della classe UITabBarController è quello di aggiungere un TabBarItem More quando ci sono più di 5 item . Il more è uno speciale NavigationBarController  con all’interno una UITableView e l’elenco degli item non visibili nella schermata principale (Fig. 1).

Figura 1 - un UITabBarController con il tasto More.

E’ possibile colorare la NavigationBar agendo direttamente su una proprietà specifica della classe UITabBarController all’interno del nostro AppDelegate.m in questo modo:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   UIColor *c = [UIColor colorWithRed:(102.0/255.0) green:(153.0/255.0) blue:(51.0/255.0) alpha:1];
   UINavigationController *nav = self.tabBarController.moreNavigationController;
   UINavigationBar *bar = nav.navigationBar;
   bar.tintColor = c;
 
   self.window.rootViewController = self.tabBarController;
   [self.window makeKeyAndVisible];
   return YES;
}

A questo punto la NavigationBar risulta correttamente colorata (Fig. 2).

Figura 2 - Il more colorato

E se premiamo il tasto Edit? Beh il risultato la figura 3 non lascia scampo, un’altra NavigationBar con il colore standard!

Figura 3 - Il Configure

Come fare? Con un trucchetto, prima bisogna impostare come UITabBarController delegate la classe AppDelegate in questo modo:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   UIColor *c = [UIColor colorWithRed:(102.0/255.0) green:(153.0/255.0) blue:(51.0/255.0) alpha:1];
   UINavigationController *nav = self.tabBarController.moreNavigationController;
   UINavigationBar *bar = nav.navigationBar;
   bar.tintColor = c;
 
   // impostare il delegate sul tabbarcontroller
   self.tabBarController.delegate = self;
 
   self.window.rootViewController = self.tabBarController;
   [self.window makeKeyAndVisible];
   return YES;
}

e poi creare il metodo willBeginCustomizingViewControllers che verrà richiamato al momento opportuno:

- (void)tabBarController:(UITabBarController *)controller willBeginCustomizingViewControllers:(NSArray *)viewControllers
{
    UIView *editView = [controller.view.subviews objectAtIndex:1];
    UINavigationBar *modalNavBar = [editView.subviews objectAtIndex:0];
    modalNavBar.tintColor = [UIColor colorWithRed:(102.0/255.0) green:(153.0/255.0) blue:(51.0/255.0) alpha:1];
 
    editView.backgroundColor = [UIColor whiteColor];
}

Ed ecco alla fine il risultato voluto da ogni punto di vista.

Figura 4 - Il configure colorato

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">