//
// UITabBar+Yao.h
// ShoppingMall
//
// Created by yaoliangjun on 16/10/20.
// Copyright © 2016年 yaoliangjun. All rights reserved.
// 自定义tabbar小红点
#import <UIKit/UIKit.h>
@interface UITabBar (Yao)
/** 显示小红点 */
- (void)showBadgeOnTabIndex:(NSInteger)index;
/** 隐藏小红点 */
- (void)hideBadgeOnTabIndex:(NSInteger)index;
@end
//
// UITabBar+Yao.m
// ShoppingMall
//
// Created by yaoliangjun on 16/10/20.
// Copyright © 2016年 yaoliangjun. All rights reserved.
//
#import "UITabBar+Yao.h"
#define TabCount 5 // tabbar的数量 如果是5个设置为5
@implementation UITabBar (Yao)
// 用法:
// 显示
// [self.tabBarController.tabBar showBadgeOnTabIndex:2];
// 隐藏
// [self.tabBarController.tabBar hideBadgeOnTabIndex:2];
// 显示小红点
- (void)showBadgeOnTabIndex:(NSInteger)index{
// 移除之前的小红点
[self removeBadgeOnItemIndex:index];
// 新建小红点
UIView *badgeView = [[UIView alloc]init];
badgeView.tag = 888 + index;
badgeView.layer.cornerRadius = 5.0;// 圆形
badgeView.backgroundColor = [UIColor redColor];// 颜色:红色
CGRect tabFrame = self.frame;
// 确定小红点的位置
CGFloat percentX = (index + 0.7) / TabCount; // 0.7控制小红点位置,值越大小红点越靠右
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)hideBadgeOnTabIndex:(NSInteger)index{
// 移除小红点
[self removeBadgeOnItemIndex:index];
}
// 移除小红点
- (void)removeBadgeOnItemIndex:(NSInteger)index{
// 按照tag值进行移除
for (UIView *subView in self.subviews) {
if (subView.tag == 888 + index) {
[subView removeFromSuperview];
}
}
}
@end
效果图如下: