tabbar加小红点

时间:2022-11-28 12:20:44

原文   http://blog.csdn.net/u013531246/article/details/44460115

#import <UIKit/UIKit.h>

@interface UITabBar (badge)

- (void)showBadgeOnItemIndex:(int)index;   //显示小红点

- (void)hideBadgeOnItemIndex:(int)index; //隐藏小红点

@end

#import "UITabBar+badge.h"

#define TabbarItemNums 3.0    //tabbar的数量

@implementation UITabBar (badge)

- (void)showBadgeOnItemIndex:(int)index{

//移除之前的小红点

[self removeBadgeOnItemIndex:index];

//新建小红点

UIView *badgeView = [[UIView alloc]init];

badgeView.tag = 888 + index;

badgeView.layer.cornerRadius = 5;

badgeView.backgroundColor = [UIColor redColor];

CGRect tabFrame = self.frame;

//确定小红点的位置

float 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, 10);

[self addSubview:badgeView];

}

- (void)hideBadgeOnItemIndex:(int)index{

//移除小红点

[self removeBadgeOnItemIndex:index];

}

- (void)removeBadgeOnItemIndex:(int)index{

//按照tag值进行移除

for (UIView *subView in self.subviews) {

if (subView.tag == 888+index) {

[subView removeFromSuperview];

}

}

}

@end