我在UITabBarItem
上有一个自定义类别,可让我自定义徽章属性。我所有与其功能相关的代码都运行正常。
但是,UIAppearance
无效。
我的方法永远不会被调用,如果我将[[UITabBarItem appearance] customBadgeBackgroundColor]
添加到我的appDelegate
,它会在iOS SDK深处发生NSInvalidArgument
错误而崩溃。如果我稍后在我的应用程序中添加此方法,则不会发生任何事情,并且UITabBarItem
的调用为空。
setCustomBadgeBackgroundColor:
永远不会被调用。
我附上了相关的最小代码。任何帮助将不胜感激。谢谢!
UITabBarItem + CustomBadge.h
#import <UIKit/UIKit.h>
@interface UITabBarItem (CustomBadge)
@property (nonatomic, assign) UIColor *customBadgeBackgroundColor UI_APPEARANCE_SELECTOR; UIAppearance doesn't work
@end
UITabBarItem + CustomBadge.m
#import "UITabBarItem+CustomBadge.h"
#import <objc/runtime.h>
@implementation UITabBarItem (CustomBadge)
- (UIColor *)customBadgeBackgroundColor
{
UIColor *customBadgeBackgroundColor = objc_getAssociatedObject(self, @selector(customBadgeBackgroundColor));
if (!customBadgeBackgroundColor) {
return [UIColor redColor];
} else {
return customBadgeBackgroundColor;
}
}
- (void)setCustomBadgeBackgroundColor:(UIColor *)customBadgeBackgroundColor
{
objc_setAssociatedObject(self, @selector(customBadgeBackgroundColor), customBadgeBackgroundColor, OBJC_ASSOCIATION_RETAIN);
UILabel *customBadgeLabel = objc_getAssociatedObject(self, @selector(customBadgeValue));
customBadgeLabel.backgroundColor = customBadgeBackgroundColor;
}
@end
可以在此处找到完整的源代码。 https://github.com/valleyman86/UITabBarItem-CustomBadge