【iOS学习】TABBAR选择的TAB背景颜色设置方法

  

  最近在做IOS项目中 TABBAR的式样和普通的不同。比如说,普通的TABBAR的式样是 选择的状态是图片和文字改变颜色,

   背景不会改变,而这次式样是 图片文字不改变,背景改变。 IOS没有直接设置选择的tab直接改变背景颜色的方法。

   只有一个可以设置背景图片的方法setSelectionIndicatorImage。所以只能先将一个宽度为1的图片根据TAB的宽度拉伸设置背景颜色。


代码如下:

   //不选择状态的背景
	UIImage *bgImage = [UIImage imageNamed:@"main_tabbtn_unselect"];
	//选择状态的背景(宽度为1 高度为49)
    UIImage *tempImage = [UIImage imageNamed:@"main_tabbtn_select"];
	//根据屏幕宽度定每个选择状态背景的大小
    CGFloat width = self.tabBar.frame.size.width / 3;
	//这个方法比较关键,让一个宽度为2的像素拉长至每个TAB的宽度(HEGIHT:IP6的宽度暂时没有考虑)
    UIImage * selectionImage = [self resizeImage:tempImage rect:CGRectMake(0, 0, width, 49)];
    //设置不选择状态背景
    [[UITabBar appearance] setBackgroundImage:bgImage];
	 //设置选择状态背景
    [[UITabBar appearance] setSelectionIndicatorImage:selectionImage];

    //设置每个TAB的文字内容和背景图
    UITabBarItem *item1 = [self.tabBar.items objectAtIndex:0];
    item1.title = @"tab1";
    UITabBarItem *item2 = [self.tabBar.items objectAtIndex:1];
    item2.title = @"tab2";
    UITabBarItem *item3 = [self.tabBar.items objectAtIndex:2];
    item3.title = @"tab3";
    //这个模式UIImageRenderingModeAlwaysOriginal最关键,表示原来图片什么颜色就一直表示什么颜色,
	//否则因为TABBAR不选择的时候图片表示成了灰色
    item1.image  = [[UIImage imageNamed:@"maintab1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    item2.image  = [[UIImage imageNamed:@"maintab2"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    item3.image  = [[UIImage imageNamed:@"maintab3"]  imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
	
    //设置文字颜色(大小还没设置)
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary  dictionaryWithObjectsAndKeys:[UIColor yellowColor],
     UITextAttributeTextColor, nil] forState:UIControlStateNormal];
    
	//设置被选择文字的颜色
    if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f && [[[UIDevice currentDevice] systemVersion] floatValue] < 8.0f ) {
        [self.tabBar setTintColor:[UIColor yellowColor]];
    } else {
        [self.tabBar setSelectedImageTintColor:[UIColor yellowColor]];
    }

//UIImage大小变更
- (UIImage*)resizeImage:(UIImage *)img rect:(CGRect)rect{
    
    UIGraphicsBeginImageContext(rect.size);
    [img drawInRect:rect];
    UIImage* resizedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return resizedImage;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值