第九篇、UITabbar增加类别用来标红点

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 = 888 + 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 == 888+index) {  
            [subView removeFromSuperview];  
        }  
    }  
}  
  
@end  

 

posted on 2016-08-22 00:11  久冬不雨  阅读(361)  评论(0编辑  收藏  举报