自定义TabBar小红点

来源:互联网 发布:天刀焰灵姬捏脸数据 编辑:程序博客网 时间:2024/05/16 11:07
////  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

效果图如下:


0 0
原创粉丝点击