2010-05-11 2 views
3

я пытаюсь настроить uitabbarIphone Пользовательских UITabBarItem без закругленных краев

я расширенный uitabbar пункт и теперь имею индивидуальные изображения в нем, но я не могу избавиться от закругленных краев.

код:

@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 

возможно somoen знает, как избавиться от закругленного прямоугольника

вокруг изображения

заранее спасибо Алекс

ответ

3

благодаря ее решили с настраиваемыми панелями вкладок элементами

NOT APPLE УТВЕРЖДЕН ПОКА.

переходит в 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

Было ли это одобрено Apple? – CVertex

+0

Да, это было одобрено. Поиск «cinemaxx» –

+0

Alex, Как вы получили красный/фиолетовый фон, чтобы занять все пространство кнопки при активном? – Travis

1

Установите cornerRadius на представлении который имеет закругленные углы до 0:

view.layer.cornerRadius = 0; 

Кроме того, вам, вероятно, нужно добавить #include, чтобы получить заявление CALayer:

#import <QuartzCore/QuartzCore.h> 
+1

спасибо. похоже, работает –

4

Это грязно - но работает и получил утверждены:

  • TabBar
  • изменяет
  • использовать свои собственные изображения в собственном размере

в настройках вкладки контроллера

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

в методе 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; 
} 

и пользовательские панели вкладок это выглядит как

@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 

ВАЖНО :

Я довольно новичок в разработке iphone и довольно симпатичный, вы можете сделать этот способ менее хаки. кроме того, я получил одобрение с этим, что НЕ означает, что вы тоже автоматически будете делать это.

1

У меня есть запрос в приведенной выше реализации.

В соответствии с яблоком, мы не должны использовать частные/деинсталлировать документированный API,,

В приведенном выше коде, два метода

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

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

Эти методы не были определены в пользовательском подклассе CustomTabBarItem.

Эти методы не-документированы/скрытые методы в UITabBarItem класс и переопределить в классеCustomTabBarItem.

Можно ли переопределить недокументированные методы?

Я все еще удивляюсь, как это одобрено Apple. Мне нужны некоторые разъяснения.

0

Любые другие приложения, утвержденные Apple с помощью этого кода? Очень интересно узнать, разрешено ли нам использовать методы selectedImage и unselectedImage?

Смежные вопросы