Iphone Custom UITabBarItem без закругленных краев - PullRequest
3 голосов
/ 11 мая 2010

я пытаюсь настроить uitabbar

Я расширил элемент 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

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

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

спасибо заранее Alex

Ответы [ 5 ]

4 голосов
/ 28 октября 2010

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

  • Изменение размера вкладки
  • используйте свои собственные изображения в своем размере

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

    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 и довольно уверен, что вы можете сделать это менее хакерским. кроме того, я получил одобрение с этим, что НЕ означает, что вы тоже будете автоматически

3 голосов
/ 27 мая 2010

спасибо решено с помощью пользовательских элементов панели вкладок

НЕ УТВЕРЖДАЮТ УТВЕРЖДАЮТ.

переходит в 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
1 голос
/ 06 декабря 2010

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

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

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

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

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

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

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

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

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

1 голос
/ 11 мая 2010

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

view.layer.cornerRadius = 0;

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

#import <QuartzCore/QuartzCore.h>
0 голосов
/ 13 сентября 2011

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

...