iOS开发tabbaritem显示小红点

作者: 搬运工开发者 | 来源:发表于2016-12-27 10:25 被阅读2937次

    新建UITabBar的类别,在类别中添加方法,基本上跟网上看到的一些做法差不多

    
    /**
     tabbar显示小红点
    
     @param index 第几个控制器显示,从0开始算起
     @param tabbarNum tabbarcontroller一共多少个控制器
     */
    - (void)showBadgeOnItmIndex:(int)index tabbarNum:(int)tabbarNum{
        [self removeBadgeOnItemIndex:index];
        //label为小红点,并设置label属性
        UILabel *label = [[UILabel alloc]init];
        label.tag = 1000+index;
        label.layer.cornerRadius = 5;
        label.clipsToBounds = YES;
        label.backgroundColor = [UIColor redColor];
        CGRect tabFrame = self.frame;
        
        
        //计算小红点的X值,根据第index控制器,小红点在每个tabbar按钮的中部偏移0.1,即是每个按钮宽度的0.6倍
        CGFloat percentX = (index+0.6);
        CGFloat tabBarButtonW = CGRectGetWidth(tabFrame)/tabbarNum;
        CGFloat x = percentX*tabBarButtonW;
        CGFloat y = 0.1*CGRectGetHeight(tabFrame);
        //10为小红点的高度和宽度
        label.frame = CGRectMake(x, y, 10, 10);
        
        
        [self addSubview:label];
        //把小红点移到最顶层
        [self bringSubviewToFront:label];
    }
    
    /**
     隐藏红点
    
     @param index 第几个控制器隐藏,从0开始算起
     */
    -(void)hideBadgeOnItemIndex:(int)index{
        [self removeBadgeOnItemIndex:index];
    }
    
    /**
     移除控件
    
     @param index 第几个控制器要移除控件,从0开始算起
     */
    - (void)removeBadgeOnItemIndex:(int)index{
        for (UIView*subView in self.subviews) {
            if (subView.tag == 1000+index) {
                [subView removeFromSuperview];
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:iOS开发tabbaritem显示小红点

        本文链接:https://www.haomeiwen.com/subject/ikisvttx.html