TabBarItem的Badge

不少时候咱们须要在TabBarItem上添加一些红色的Badge用于提示用户这里出现了新内容,能够查看,最多见的莫过于微信的朋友圈,通常红圈Badge包含2种状况: 微信

1)包含数字显示 post

2)不包含数字显示 spa

默认的状况下TabBarItem中已经有了BadgeValue这个属性,添加Badge时只需为Item设置一个BadgeValue值就能够了,在1)的状况下表现很是良好,可是在2)的状况下若是设置BadgeValue为@""的话,那个红色Badge将会很是的大,显然不合适,那么咱们须要作一些调整,以下: code

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从新定义了一下。 get

相关文章
相关标签/搜索