Iphone Custom UITabBarItem没有圆边

时间:2010-05-11 15:15:34

标签: iphone objective-c rounded-corners

我尝试自定义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

也许somoen知道如何摆脱圆形的矩形

图像周围

提前谢谢 亚历

5 个答案:

答案 0 :(得分:4)

这很脏 - 但有效并获得批准:

  • 调整大小标签栏
  • 以自己的尺寸使用自己的图像
选项卡控制器设置

中的

    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 init方法中的

   - (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开发的新手,非常漂亮,你可以这样做,而不是hacky。此外,我得到了批准,这并不意味着你也会自动化。

答案 1 :(得分:3)

感谢用自定义标签栏项解决了它

不是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

答案 2 :(得分:1)

将圆角的视图上的cornerRadius设置为0:

view.layer.cornerRadius = 0;

此外,您可能需要添加#include以获取CALayer声明:

#import <QuartzCore/QuartzCore.h>

答案 3 :(得分:1)

我在上面的实现中有一个查询。

根据苹果,我们不应该使用私有/未记录的API,

在上面的代码中,有两种方法

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

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

这些方法未在自定义子类 CustomTabBarItem 中定义。

这些方法是 UITabBarItem 类中未记录/隐藏的方法,并在 CustomTabBarItem 类中重写。

覆盖未记录的方法是否可以?

我仍然对Apple如何获得批准感到惊讶。 我需要一些澄清。

答案 4 :(得分:0)

Apple使用此代码验证的其他任何应用程序?非常有兴趣知道我们是否有权使用selectedImage和unselectedImage方法?