使UItabbar透明

时间:2013-04-09 12:27:03

标签: iphone uitabbarcontroller uitabbar uitabbaritem

所以我的tabbar中有两个tabbar项,每个都有一个带圆角的图像,圆角位于它们相遇的位置,如图所示。我试图将tabbar的背景图像设置为透明而不是你可以看到的那个黑色,但到目前为止,我一直碰到一些不想透明的视图。以下是我目前正在使用的内容:

[[UIView appearanceWhenContainedIn:[UITabBar class], nil] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"transparent"]]];

我也尝试了下一段代码,但没有成功。

[tabBar setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"transparent"]]];
for(UIView *v in tabBar.subviews)
{
    if(v.class == NSClassFromString(@"_UITabBarBackgroundView")||v.class == NSClassFromString(@"UITabBarButton"))
    {
        [v setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"transparent"]]];
    }
    for(UIView *vc in v.subviews)
    {
        [vc setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"transparent"]]];
    }
}

有什么建议吗?如何找到该视图并使其透明?

tabbar too tabbar

1 个答案:

答案 0 :(得分:2)

您可以为此实现一个类别,扩展UITabBarController,如:

<强>的UITabBarController + TransparentBackground.h

@interface UITabBarController (TransparentBackground) 
- (void) setBackgroundImage:(UIImage *)image;
@end

<强>的UITabBarController + TransparentBackground.m

#import "UITabBarController+TransparentBackground.h"
@implementation UITabBarController (TransparentBackground)

- (void) setBackgroundImage:(UIImage *)image 
{
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,480)];
    imageView.backgroundColor = [UIColor colorWithPatternImage:image];
    [self.view addSubview:imageView];
    [self.view sendSubviewToBack:imageView];
    [self.view setOpaque:NO];
    [self.view setBackgroundColor:[UIColor clearColor]];
}

@end

#import "UITabBarController+TransparentBackground.h"文件中添加AppDelegate.m

AppDelegate.m的{​​{1}}方法中,添加以下两行(在顶部):

didFinishLaunchingWithOptions

希望你通过这样说来实现它。

有关详情:REFRENCE

修改

通过以下方式将属性添加到[tabBarController setBackgroundImage:[UIImage imageNamed:@"CustomTabBarBackground.png"]]; [tabBarController.view setNeedsDisplay];

@property(nonatomic,retain)IBOutlet UITabBarController * tabBarController;

同样在AppDelegate.h文件中@sythesize tabBarController;

并将此AppDelegate.mIBOutlet property

中的相应TabBarController相关联