UIAppearance使用类别/扩展名自定义UITabBarItem不起作用

时间:2015-12-06 00:47:13

标签: ios objective-c uitabbaritem objective-c-category uiappearance

我在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

0 个答案:

没有答案