【iOS_Development】添加/隐藏UITabBar右上角的小红点

添加/隐藏UITabBar右上角的小红点

  • 话不多说,直接上代码吧!

1.添加tabBar的小红点

/** 添加tabBar的小红点
 *  index:tabBar上的第几个索引
 *  tabbar:(self.tabBarController.tabBar)
 *  num:显示的数字(无数字 num = 0)
 */
+ (void)tbShowBadgeOnItemIndex:(NSInteger)index withTabBar:(UITabBar *)tabbar withNumber:(NSInteger)num {
    // 新建小红点
    UIView *badgeView = [[UIView alloc] init];
    badgeView.tag = 888 + index;
    // 颜色:红色
    badgeView.backgroundColor = [UIColor redColor];
    CGRect tabFrame = tabbar.frame;
    // 确定小红点的位置
    float percentX = (index + 0.59) / 3;
    CGFloat x = ceilf(percentX * tabFrame.size.width) - 4;
    CGFloat y = ceilf(0.1 * tabFrame.size.height) - 2;

    // 判断是否有数字
    if (num <= 0) {
        // 只显示小红点

        // 圆形的宽度和高度
        CGFloat badgeViewWidthAndHeight = 9.0;
        badgeView.frame = CGRectMake(x, y, badgeViewWidthAndHeight, badgeViewWidthAndHeight);
    } else {
        // 显示小红点和数量

        // 圆形的宽度和高度
        CGFloat badgeViewWidthAndHeight = 15.0;
        badgeView.frame = CGRectMake(x, y, badgeViewWidthAndHeight, badgeViewWidthAndHeight);

        // 添加数量文字label
        UILabel *numLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(badgeView.frame), CGRectGetHeight(badgeView.frame))];
        numLabel.textAlignment = NSTextAlignmentCenter;
        numLabel.text = [NSString stringWithFormat:@"%ld", num];
        numLabel.font = [UIFont systemFontOfSize:10];
        numLabel.textColor = [UIColor whiteColor];
        [badgeView addSubview:numLabel];
    }

    // 圆形
    badgeView.layer.cornerRadius = CGRectGetWidth(badgeView.frame)/2;
    [tabbar addSubview:badgeView];
}

2.移除小红点

/** 移除小红点
 *  index:tabBar上的第几个索引
 *  tabbar:(self.tabBarController.tabBar)
 */
+ (void)tbRemoveBadgeOnItemIndex:(NSInteger)index withTabBar:(UITabBar *)tabbar {
    // 按照tag值进行移除
    for (UIView *subView in tabbar.subviews) {
        if (subView.tag == 888 + index) {
            [subView removeFromSuperview];
        }
    }
}

Github地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值