自定义UITabBar的背景图片或者颜色

本文介绍了如何自定义UITabBarController的tabBar背景颜色及tabbarItem的图片,包括使用UIImageView修改图片和通过delegate方法实现图片动态切换,同时提供了去除tabBar顶部一像素横线的方法。
摘要由CSDN通过智能技术生成

方法一:

 

UITabBarController  *tabBarController = [[UITabBarController alloc] init];

CGRect frame = CGRectMake(0, 0, 320, 49);

UIView *v = [[UIView alloc] initWithFrame:frame];

UIImage *img = [UIImage imageNamed:@"tabbar.png"];

UIColor *color = [[UIColor alloc] initWithPatternImage:img];

v.backgroundColor = color;

[tabBarController.tabBar insertSubview:v atIndex:0];

tabBarController.tabBar.opaque = YES;

[color release];

[v release];


方法二:

 

默认UITabBarController的tabBar背景是黑色的。可以按 下面方法:

UITabBarController  *tabBarController = [[UITabBarController alloc] init];

NSArray *array = [tabBarController.view subviews];

UITabBar *tabBar = [array objectAtIndex:1];

UIImage *image = [UIImage imageWithContentsOfFile:sourcePath ];

tabBar.layer.contents = (id)image.CGImage;


第二种可以去掉上面一像素的横线。


更改tabbarItem的图片

    NSArray *itemArray = [[[rootTabBarController.viewsubviewsobjectAtIndex:1]subviews];

    for (int i = 0; i < itemArray.count; i++) {

            

        UIImageView *image = [[UIImageView allocinit];

        UIView *v = [itemArray objectAtIndex:i];

        if (i == 0) {

            

            image.image = [UIImageimageNamed:@"Tab_bar_11.png"];

        }else {

            

            image.image = [UIImageimageNamed:[NSStringstringWithFormat:@"Tab_bar_0%d.png",i +1]];

        }

        image.frame =CGRectMake(23,33030);

        [v addSubview:image];

        [image release],image = nil;

    }



然后在delegate 里面

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

    

    if (tabBarController.selectedIndex == [tabBarController.viewControllersindexOfObject:viewController]) {

        return NO;

    }

    

    NSArray *itemArray = [[[tabBarController.viewsubviewsobjectAtIndex:1]subviews];

    for (int i = 0; i < itemArray.count; i++) {

        

        UIImageView *image = [[UIImageView allocinit];

        UIView *v = [itemArray objectAtIndex:i];

        if (i == [tabBarController.viewControllersindexOfObject:viewController]) {

            

            image.image = [UIImageimageNamed:[NSStringstringWithFormat:@"Tab_bar_1%d.png",i +1]];

        }else {

            

            image.image = [UIImageimageNamed:[NSStringstringWithFormat:@"Tab_bar_0%d.png",i +1]];

        }

        image.frame =CGRectMake(23,33030);

        

        NSArray *imageArr = [v subviews];

        

        for (UIView *v in imageArr) {

            

            if ([v isKindOfClass:[UIImageViewclass]]) {

            

                [v removeFromSuperview];

            }

     if ([subview isKindOfClass:[UILabel class]])

//            {

//                UILabel *label = (UILabel *)subview;

//                

//                UILabel *newLabel = [[UILabel alloc] init];

//                newLabel.font = label.font;

//                newLabel.text = label.text;

//                newLabel.textColor = [UIColor redColor];

//                newLabel.backgroundColor = [UIColor clearColor];

//                newLabel.opaque = YES;

//                newLabel.frame = CGRectMake(0, 0, label.frame.size.width, label.frame.size.height + 1);    

//                [subview addSubview:newLabel];

//                [newLabel release];

//            }


        }

        [v addSubview:image];

        [image release],image = nil;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值