iOS 怎么修改UITabBarItem角标badge颜色

废话不多说,直接上代码!

Paste_Image.png

为了不影响系统自带功能,所以添加一个UITabBarItem的分类:

// .h 文件
@interface UITabBarItem (Custom)
// 设置角标值时,替换系统的 'setBadgeValue:'方法
- (void)my_setBadgeValue:(NSString *)badgeValue;
@end
// .m 文件
@implementation UITabBarItem (Custom)

- (void)my_setBadgeValue:(NSString *)badgeValue
{
    // 先设置角标值
    [self setBadgeValue:badgeValue];
    
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_10_0
    // 如果系统是iOS10 以上的就使用系统方法修改
    UIColor *badgeColor = [UIColor blueColor];
    [self setBadgeColor:badgeColor];
#else
    // 这里替换角标颜色的图片,需要注意的时:这个图片size=(36px,36px),圆的
    UIImage *badgeImage = [UIImage imageNamed:@"blueBadge"];
    [self customBadgeColorWith:badgeImage];
#endif
}

- (void)customBadgeColorWith:(UIImage *)badgeImage
{
    UIView *tabBarButton = (UIView *)[self performSelector:@selector(view)];
    
    // iOS10以下的版本 角标其实是一张图片,所以我们一直找下去这个图片,然后替换他
    for(UIView *subview in tabBarButton.subviews) {
        NSString *classString = NSStringFromClass([subview class]);
        if([classString rangeOfString:@"UIBadgeView"].location != NSNotFound) {
            for(UIView *badgeSubview in subview.subviews) {
                NSString *badgeSubviewClassString = NSStringFromClass([badgeSubview class]);
                if([badgeSubviewClassString rangeOfString:@"BadgeBackground"].location != NSNotFound) {
                    [badgeSubview setValue:badgeImage forKey:@"image"];
                }
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,387评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,245评论 4 61
  • 美人一旦跟政治沾上边,就免不了要成为祸水。 明朝末年,一个朝代即使在走向终点时,散发出的腐朽气息已随处可闻,可依旧...
    何潇湘阅读 1,486评论 6 13
  • 爱情是什么? 我是怎么想的?你一定是不知道的了... 还是我来告诉你吧. 我觉得爱情是-----一个人的思想在另一...
    厜暪烟劸阅读 253评论 0 0
  • 【拍摄时间】:2017年7月9日 【拍摄地点】:河南省许昌市鄢陵县 【拍摄景物】:晚霞 【后期处理】:snapse...
    润苼阅读 789评论 2 7