如何替换现有的UIColors

时间:2014-03-19 20:14:48

标签: subclass uicolor redefine

我正在尝试为我的应用制作主题系统。有没有办法重新定义默认的UIColors?我已经尝试将UIColor子类化了:

//.h file

#import <UIKit/UIKit.h>

@interface UIColor(UIColor_themeColor)

+ (UIColor *)blackColor;

@end

//.m file

#import "UIColor+themeColor.h"
#import "DeviceColor.h"

@implementation UIColor(UIColor_themeColor)

+ (UIColor *)blackColor {
    return [self  blackColor];
}

@end

然后我收到警告Category is implementing a method which will also be implemented by its primary class,这是可以理解的,如果我构建它,应用程序将崩溃。

有没有办法做我喜欢做的事情?

1 个答案:

答案 0 :(得分:1)

你会从每个人那里得到的序言,我认为:做你想做的事情是一个坏主意,因为一个名为blackColor的方法应该返回黑色。应始终适当地命名方法。

后前导码:

使用方法调配。您无法通过声明直接执行此操作,但由于Objective-C运行时是动态的,因此您可以在运行时切换方法的实现。您需要使用其C API直接与the runtime对话,但这并不太棘手。

Mike Ash's指南引导您完成理论并向您展示代码,比我可能在此处更清楚。