很多时候我们需要在TabBarItem上添加一些红色的Badge用于提示用户这里出现了新内容,可以查看,最常见的莫过于微信的朋友圈,一般红圈Badge包含2种情况:
1)包含数字显示
2)不包含数字显示
默认的情况下TabBarItem中已经有了BadgeValue这个属性,添加Badge时只需为Item设置一个BadgeValue值就可以了,在1)的情况下表现非常良好,但是在2)的情况下如果设置BadgeValue为@""的话,那个红色Badge将会非常的大,显然不合适,那么我们需要做一些调整,如下:
for (UIView *viewTab in tabBar.subviews) { for (UIView *subView in viewTab.subviews) { NSString *strClassName = [NSString stringWithUTF8String:object_getClassName(subView)]; if ([strClassName isEqualToString:@"UITabBarButtonBadge"] || // **** iOS 6 prior is UITabBarButtonBadge [strClassName isEqualToString:@"_UIBadgeView"]) { // **** iOS posterior is UITabBarButtonBadge CGRect badgeFrame = subView.frame; badgeFrame.size = CGSizeMake(8, 8); subView.frame = badgeFrame; subView.layer.masksToBounds = YES; subView.layer.cornerRadius = 4; subView.backgroundColor = [UIColor redColor]; return ; } } }
首先需要设置好需要设置Badge的Item,然后添加上面的代码即可,就是把原有的badgeview的frame重新定义了一下。
时间: 2024-10-13 17:01:32