1.系统中只有设置bage的方式,设置为nil也是为一个红点,但是很大,并不是我们需要的
2.扩充标红点的方法 (常用于有新的动态提示标志)
#import <UIKit/UIKit.h> @interface UITabBar (XSDExt) - (void)showBadgeOnItemIndex:(int)index; ///<显示小红点 - (void)hideBadgeOnItemIndex:(int)index; ///<隐藏小红点 @end
#import "UITabBar+XSDExt.h" #define TabbarItemNums 3.0 //tabbar的数量 如果是5个设置为5 @implementation UITabBar (XSDExt) //显示小红点
- (void)showBadgeOnItemIndex:(NSInteger)index{
//移除之前的小红点
[self removeBadgeOnItemIndex:index]; //新建小红点
UIView *badgeView = [[UIView alloc]init];
badgeView.tag = + index;
badgeView.layer.cornerRadius = 5.0;//圆形
badgeView.backgroundColor = [UIColor redColor];//颜色:红色
CGRect tabFrame = self.frame; //确定小红点的位置
CGFloat percentX = (index + 0.6) / TabbarItemNums;
CGFloat x = ceilf(percentX * tabFrame.size.width);
CGFloat y = ceilf(0.1 * tabFrame.size.height);
badgeView.frame = CGRectMake(x, y, 10.0, 10.0);//圆形大小为10
badgeView.clipsToBounds = YES;
[self addSubview:badgeView];
} //隐藏小红点
- (void)hideBadgeOnItemIndex:(int)index{
//移除小红点
[self removeBadgeOnItemIndex:index];
} //移除小红点
- (void)removeBadgeOnItemIndex:(int)index{
//按照tag值进行移除
for (UIView *subView in self.subviews) {
if (subView.tag == +index) {
[subView removeFromSuperview];
}
}
} @end