【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主页

CSDN Blog

Email:[email protected]

你可能感兴趣的:(【iOS_Development】添加/隐藏UITabBar右上角的小红点)