添加/隐藏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);// 添加数量文字labelUILabel *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