TabBar添加 小红点 (不显示未读消息数量)只是 红点

转自:http://blog.csdn.net/u013531246/article/details/44460115

为 Tabbar 添加 类别 : HTBadge

.h文件

import

@interface UITabBar (badge)

/显示小红点/

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

@end

.m文件

import "UITabBar+badge.h"

define TabbarItemNums 4.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

调用:
//显示
[self.tabBarController.tabBar showBadgeOnItemIndex:2];

//隐藏
[self.tabBarController.tabBar hideBadgeOnItemIndex:2]

你可能感兴趣的:(TabBar添加 小红点 (不显示未读消息数量)只是 红点)