2010-05-11 3 views
3

i essayer de personnaliser un UITabBarIphone personnalisé UITabBarItem sans bords arrondis

i étendu UITabBar élément et maintenant une image personnalisée en elle, mais je ne peux pas se débarrasser des bords arrondis.

code:

@interface CustomTabBarItem : UITabBarItem 
{ 
    UIImage *customHighlightedImage; 
} 

@property (nonatomic, retain) UIImage *customHighlightedImage; 

@end 

@implementation CustomTabBarItem 

@synthesize customHighlightedImage; 

- (void) dealloc 
{ 
    [customHighlightedImage release]; customHighlightedImage=nil; 
    [super dealloc]; 
} 

-(UIImage *) selectedImage 
{ 
    return self.customHighlightedImage; 
} 

@end 

sait somoen peut-être comment se débarrasser de l'rect arrondi

autour de l'image

merci à l'avance alex

Répondre

3

grâce résolus avec les éléments de la barre d'onglet personnalisé

PAS APPLE AGRÉÉS ENCORE.

va dans tabController1.m

- (id) init 
{ 
    if(self = [super init]) 
    { 
     CustomTabBarItem *tabItem = [[CustomTabBarItem alloc] 
            initWithTitle:@"" image:nil tag:0]; 

     tabItem.customHighlightedImage=[UIImage imageNamed:TABBAR_TAB_4_ACTIVE]; 
     tabItem.customStdImage=[UIImage imageNamed:TABBAR_TAB_4_DEFAULT];  

     self.tabBarItem=tabItem; 
     [tabItem release]; 
     tabItem=nil;  
    } 
    return self; 
} 

cutom tabbaritem:

@interface CustomTabBarItem : UITabBarItem 
{ 
    UIImage *customHighlightedImage; 
    UIImage *customStdImage; 
} 

@property (nonatomic, retain) UIImage *customHighlightedImage; 
@property (nonatomic, retain) UIImage *customStdImage; 

@end 

#import "CustomTabBarItem.h" 


@implementation CustomTabBarItem 

@synthesize customHighlightedImage; 
@synthesize customStdImage; 

- (void) dealloc 
{ 
    [customHighlightedImage release]; customHighlightedImage=nil; 
    [customStdImage release]; customStdImage=nil; 
    [super dealloc]; 
} 

-(UIImage *) selectedImage 
{ 
    return self.customHighlightedImage; 
} 

-(UIImage *) unselectedImage 
{ 
    return self.customStdImage; 
} 

@end 
+0

Était-ce approuvé par Apple? – CVertex

+0

Oui, il a été approuvé. Rechercher "cinemaxx" –

+0

Alex, Comment avez-vous obtenu le fond rouge/violet pour occuper tout l'espace du bouton lorsqu'il est actif? – Travis

1

Réglez le cornerRadius sur la vue qui a arrondi les coins à 0:

view.layer.cornerRadius = 0; 

De plus, vous aurez probablement besoin d'ajouter un #include pour obtenir les déclarations de CALayer:

#import <QuartzCore/QuartzCore.h> 
+1

merci. semble fonctionner –

4

C'est sale - mais fonctionne mais j'ai approuvé:

  • redimensionne TabBar
  • utiliser vos propres images en propre taille

dans le contrôleur onglet Configuration

tabController = [[UITabBarController alloc] init]; 
tabController.view.frame = CGRectMake(0, 72, 320, 480 - (82)); 
tabController.delegate = self; 
UIImageView *bgImageView; 
bgImageView = [ [ UIImageView alloc ] initWithImage: [UIImage imageNamed:TABBAR_BACKGROUND]]; 
bgImageView.frame = CGRectMake(0, -11, 320, 60); 

[[tabController tabBar] addSubview:bgImageView]; 
[[tabController tabBar] sendSubviewToBack:bgImageView]; 
tabController.tabBar.frame = CGRectMake(0, 460 - (59 + 52 - 11), 320, 49); 
[bgImageView release]; 

[window addSubview:tabController.view]; 

dans la méthode init tabviewcontroller1

- (id) init 
{ 
    if(self = [super init]) 
    {  
     CustomTabBarItem *tabItem = [[CustomTabBarItem alloc] 
            initWithTitle:@"" image:nil tag:0]; 

     tabItem.customHighlightedImage=[UIImage imageNamed:TABBAR_TAB_1_ACTIVE]; 
     tabItem.customStdImage=[UIImage imageNamed:TABBAR_TAB_1_DEFAULT];  

     self.tabBarItem=tabItem; 
     [tabItem release]; 
     tabItem=nil; 
    } 

return self; 
} 

et la barre d'onglet personnalisé, il ressemble à

@interface CustomTabBarItem : UITabBarItem 
    { 
     UIImage *customHighlightedImage; 
     UIImage *customStdImage; 
    } 

    @property (nonatomic, retain) UIImage *customHighlightedImage; 
    @property (nonatomic, retain) UIImage *customStdImage; 

    @end 

#import "CustomTabBarItem.h" 


@implementation CustomTabBarItem 

@synthesize customHighlightedImage; 
@synthesize customStdImage; 

- (void) dealloc 
{ 
    [customHighlightedImage release]; customHighlightedImage=nil; 
    [customStdImage release]; customStdImage=nil; 
    [super dealloc]; 
} 

-(UIImage *) selectedImage 
{ 
    return self.customHighlightedImage; 
} 

-(UIImage *) unselectedImage 
{ 
    return self.customStdImage; 
} 

@end 

IMPORTANT :

Je suis assez nouveau pour le développement de l'iphone et assez joli shure vous pouvez faire de cette façon moins hacky. En outre, je suis approuvé avec ce qui ne veut pas dire que vous autobiatically, aussi.

1

J'ai une requête dans l'implémentation ci-dessus.

Comme par pomme, nous ne devrions pas utiliser l'API privé/non documenté de,

Dans le code ci-dessus, les deux méthodes

-(UIImage *) selectedImage { 
    return self.customHighlightedImage; } 

-(UIImage *) unselectedImage { 
    return self.customStdImage; } 

Ces méthodes ne sont pas définies dans la sous-classe personnalisée CustomTabBarItem.

Ces méthodes sont des méthodes non documentées/cachées dans la classe UITabBarItem et réécrite dans la CustomTabBarItem classe. Est-il acceptable de dépasser les méthodes non documentées?

Je suis toujours surpris de voir comment cela a été approuvé par Apple. J'ai besoin de quelques éclaircissements ici.

0

D'autres applications validées par Apple avec ce code? Très intéressé de savoir si nous sommes autorisés à utiliser les méthodes selectedImage et unselectedImage?