40 votes

Couleurs personnalisées dans UITabBar

Est-il possible d'utiliser des couleurs personnalisées et des images d'arrière-plan dans un UITabBar? Je me rends compte qu'Apple voudrait que tout le monde utilise les mêmes barres de tabulation bleue et grise, mais y a-t-il un moyen de le personnaliser?

Deuxièmement, même si je devais créer mon propre contrôleur de vue de type TabBar, ainsi que des images personnalisées, cela enfreindrait -il les directives d'interface utilisateur d'Apple?

30voto

Filiberto Cota Points 330

J'ai trouvé une réponse à cela chez Silent Mac Design .

J'ai implémenté cette manière:

Commencez par créer une sous-classe de UITabBarContoller

 // CustomUITabBarController.h

#import <UIKit/UIKit.h>

@interface CustomUITabBarController: UITabBarController {
  IBOutlet UITabBar *tabBar1;
}

@property(nonatomic, retain) UITabBar *tabBar1;
 

@fin

 // CustomUITabBarController.m

#import "CustomUITabBarController.h"

@implementation CustomUITabBarController

@synthesize tabBar1;

- (void)viewDidLoad {
  [super viewDidLoad];

  CGRect frame = CGRectMake(0.0, 0, self.view.bounds.size.width, 48);

  UIView *v = [[UIView alloc] initWithFrame:frame];

  [v setBackgroundColor:[[UIColor alloc] initWithRed:1.0
                                               green:0.0
                                                blue:0.0
                                               alpha:0.1]];

  [tabBar1 insertSubview:v atIndex:0];
  [v release];
}

@end
 

Et dans votre fichier Nib, remplacez la classe de votre contrôleur TabBar par CustomUITabBarController.

20voto

Dan J Points 7314

Pour info, à partir de iOS 5, vous pouvez personnaliser divers aspects de la UITabBar, y compris l'établissement de son image d'arrière-plan à l'aide de la backgroundImage de la propriété.

La nouvelle UITabBar "Personnalisation de l'Apparence" propriétés dans iOS 5 sont:

backgroundImage 
selectedImageTintColor  
selectionIndicatorImage  
tintColor  

Étant donné que Apple ont introduit ces méthodes dans iOS 5, il est possible qu'ils peuvent être plus de sympathie pour les tentatives de personnaliser la UITabBar pour les précédents Systèmes d'exploitation. Ce site dit que l'application Twitter, utilise un onglet personnalisé bar, donc cela pourrait être une raison de plus qu'Apple serait laisser une telle application dans l'App Store, il n'est pas garantie si!

14voto

Sagar R. Kothari Points 9606

Utiliser les images Suivantes ( en Supposant, tabBar est d'avoir 5 Onglets comme suit )

  • enter image description here
  • enter image description here
  • enter image description here
  • enter image description here
  • enter image description here

Créer un nouveau projet à l'aide d' - "TabBar Application" template & Lieu à la suite du code.

Contenu de AppDel.h Fichier.

#import <UIKit/UIKit.h>

@interface cTabBarAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {

}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@property (nonatomic, retain) IBOutlet UIImageView *imgV;

@end

Contenu de AppDel.m de Fichier.

#import "cTabBarAppDelegate.h"

@implementation cTabBarAppDelegate
@synthesize window=_window;
@synthesize tabBarController=_tabBarController;
@synthesize imgV = _imgV;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.tabBarController.delegate=self;
    self.imgV.frame=CGRectMake(0, 425, 320, 55);
    [self.tabBarController.view addSubview:self.imgV];
    self.tabBarController.selectedIndex=0;
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
    NSUInteger index=[[tabBarController viewControllers] indexOfObject:viewController];
    switch (index) {
        case 0:
            self.imgV.image=[UIImage imageNamed:@"tBar1.png"];
            break;
        case 1:
            self.imgV.image=[UIImage imageNamed:@"tBar2.png"];
            break;
        case 2:
            self.imgV.image=[UIImage imageNamed:@"tBar3.png"];
            break;
        case 3:
            self.imgV.image=[UIImage imageNamed:@"tBar4.png"];
            break;
        case 4:
            self.imgV.image=[UIImage imageNamed:@"tBar5.png"];
            break;
        default:
            break;
    }
    return YES;
}

9voto

Richard Chen Points 237

Au début de *** ViewController.m, ajoutez les éléments suivants qui pourraient aider à définir l’image d’arrière-plan de UITabBar.

 
@implementation UITabBar (CustomImage)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"background.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
 

6voto

Si vous souhaitez utiliser des couleurs personnalisées pour les icônes (et pas juste le fond) au lieu de la valeur par défaut de gris et de bleu, de faire comme ceci: http://blog.theanalogguy.be/2010/10/06/custom-colored-uitabbar-icons/

Fondamentalement, vous avez besoin pour créer des tabbar images (fond d'écran et des icônes et du texte) pour chaque onglet sélectionné, et de définir votre UITabBarItems pas d'icône et aucun titre et insérer l'image dans la tabbar comme une UIImageView dans viewWillAppear:

Et Apple ne sera pas l'esprit, puisque nous ne sommes pas à l'aide de toutes les Api privées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X