美文网首页iOS DeveloperiOS开发者iOS进阶之路
【iOS_Development】添加/隐藏UITabBar右上

【iOS_Development】添加/隐藏UITabBar右上

作者: Anticipate_91 | 来源:发表于2017-05-15 09:11 被阅读112次

添加/隐藏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:jinjob@icloud.com

相关文章

网友评论

    本文标题:【iOS_Development】添加/隐藏UITabBar右上

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